
VC++2010expressで作成したC++のプログラムがあります。VS内から起動した場合には、デバッグモードでもリリースモードでも問題なく作動するのですが、VS外から、アイコンをクリックして起動すると、malloc()したメモリーをfree()したときに作動停止してしまうことがあります。確率は低いですが、正常に作動する場合もあり、また、free()をコメントアウトすると作動停止しなくなります。メモリーの扱いに問題があるのかと思い、malloc()の直後にfree()してみましたが、同様な症状が見られました。どのような原因が考えられるでしょうか。
No.2ベストアンサー
- 回答日時:
malloc()で取得したした領域を越えてアクセスする。
という動作をする箇所があるのでしょう。
ファイルアクセスとかしていたりはしないですか?
「カレントディレクトリのファイル」をオープンして読み込み。
とかの処理に「オープン出来なかった時」のエラー処理が抜けていたりはしないですか?
VS上からの実行と、エクスプローラなどからexeファイルをダブルクリックなどで起動した場合とではカレントディレクトリが異なったりしますけど……。
OutputDebugString()でデバッグ出力するようにして、外部のモニタツールで確認してみてはどうでしょう?
# もっとも、その変更により問題が出なくなる。なんてコトもあるかも知れませんが……。
ありがとうございます。
おっしゃるとおり、まったく別の場所で、長さlengthの文字列に対してlength+1バイトをalloc()すべきところ、lengthバイトしかalloc()していないところを発見し、それを修正したところ、この問題も起こらなくなりました。初歩的なミスでした。コンパイル時にもエラーにならないし、実行時エラーも散発的に発生、MessageBox等のブレークポイントを入れるとうまく動いてしまったりで、発見に苦労しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
html上で、バッチやexeファイル...
-
VB5が起動しない
-
jspのエラーが修正できません。
-
量子化学計算ソフト GAMESS の...
-
GUIアプリをコマンドラインで使...
-
LabVIEWでEXCELファイルを操作...
-
エラー この変数は宣言されて...
-
Eclipseで、プロジェクト名のと...
-
SVFの設定について:クラスパス...
-
この <windows.h> はどこに在る...
-
「ワークスペースをビルド中」...
-
『ClassNotFoundException: org...
-
eclipseでのsvn認証エラー回避方法
-
javax.servlet.ServletExceptio...
-
classファイルについて
-
エラー:org.springframeworkが...
-
JSPのクラスをコンパイルできな...
-
Javascriptの値をJava(JSP)へ渡...
-
Eclipse(JAVA)のデバッグで他...
-
JAR内のクラス一覧と、メソッド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
html上で、バッチやexeファイル...
-
LabVIEWでEXCELファイルを操作...
-
別のAccessファイルのフォーム...
-
VBA Application visibleの...
-
system.mdwを見つけることが出...
-
Access VBAよりシート名を取得...
-
VBAで作成したマクロをデスクト...
-
GUIアプリをコマンドラインで使...
-
エラー この変数は宣言されて...
-
*.asp の拡張子名がついたht...
-
HTMLファイルからexeファイルを...
-
jspのエラーが修正できません。
-
BIOSの更新
-
ホームページで,midのリンクを...
-
ASPからJavaの起動
-
EXE間で同期をとりながらデータ...
-
VB6.0 Shellによる終了監視に...
-
C# Font情報を保存したい
-
量子化学計算ソフト GAMESS の...
-
複数のパソコン間のDir関数につ...
おすすめ情報