VC++で実行中にRuntimeエラー – プログラミング – Home

VC++で実行中にRuntimeエラー
 
通知
すべてクリア

VC++で実行中にRuntimeエラー


mac
 mac
(@mac)
ゲスト
結合: 22年前
投稿: 37
Topic starter  

いつも参考にしております、macと申します。

コンソールアプリケーションで実行中に
以下のメッセージが表示されます。

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

このメッセージが出る場合、どこに原因があるのでしょうか?

このメッセージの表示直前では

int nCnt = 5123;
int *pArray = new int[nCnt * 2];

を実行してますが、int型のnewに失敗しているのでしょうか?

どなたかご教授お願いします。

環境
windowsXP VC++6.0


引用解決済
トピックタグ
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

範囲外参照とか、そのあたりかも。
明らかに情報が足りないので、ご自身でデバッグしてください。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200502/05020002.txt


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

デバッガが使えるはずなのでそれでステップ実行してみてはどうでしょう。
少なくともデバッガで状況を確認してから掲示板へ投稿する事をお勧めします。
多分、デバッガで追うくらいはしていないと質問されてもこたえられないと思います。
デバッガの使い方についてはHELPを読むか、参考書で調べて見てください。


返信引用
mac
 mac
(@mac)
ゲスト
結合: 22年前
投稿: 37
Topic starter  

Ban様、PATIO様回答ありがとうございます。

debugモードで実行すると、「仮想メモリ領域が足りない」とのメッセージが
出力されてデバッグができない状態でした。
strdupで不必要な領域を作成していた箇所を、修正してメモリの使用量を
抑えた結果、上記のRuntimeエラーメッセージも出力されずに正常に
動作しました。

また質問ですが、仮想メモリ領域で4096MB割り当てているのに対して、
タスクマネージャで確認したところ、メモリ使用量が2500MB位になったあたりで
Runtimeエラーメッセージが出ていたようです。
一つのアプリケーションで使用できるメモリ上限など、制限があるのでしょうか?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

> また質問ですが、仮想メモリ領域で4096MB割り当てているのに対して、

それはエラーも出るかと。

32bitのCPUでは、メモリ空間自体が全部で4096MBしかありません。(アドレス自体が32bitなので)

そして、この中でアプリが使えるのは通常 2GB 以下と考えてください。(もっと少ないのが普通だと
思います)
提示のような指定をすると、システム全体が不安定になったりしても当然と思います。

もっと少ないメモリを切り貼りして使うなり、64bitOSを検討するなり、設計を見直されることをお
勧めします。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

作成されているアプリケーションの性質にもよりますけれど、
一つのアプリケーションで大量にメモリを取ってしまったら
他のアプリはまともに動かなくなると思います。

例えば、そのソフト以外の余計なプログラムを一切使わないとしても
OSが使用する部分のメモリがありますし、仮想で割り振っていると言っても
足りない部分はスワップが走るでしょうからパフォーマンスはがくっと落ちると
思います。

Banさんも言われているように64bitOSの使用を考えるか
さもなくば、そのとき処理に必要な部分のみをメモリ上に置くように
仕様を変更するべきでしょう。
確かに最近は環境がリッチになってメモリもガンガン使えるようになってはいますが、
無制限に使えるわけではありませんし、そのソフトが動いている時は他に何も出来ない
のでは使い勝手が悪いと思いますよ。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

 仮想メモリーといってもずっと仮想というわけにはいかないので、
ウインドウズのシステムの中で仮想と物理のアドレスの切替えを
していると思います。

PATIOさんの意見にもあるとおり、
割り当てられるメモリーは理論上は2Gまでですが、現実は搭載している
メモリーからウインドウで使用しているリソース分を差引きした容量です。
少しシステム的に考えたほうがよさそうですね。

64BITOS、64BITCPUにしても、現実的に4GBYTEメモリが使えるマザーボード
を手に入れるのも難しいと思います。
#チップセット・メモリーが対応しているのかな?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました