- ベストアンサー
VS内で問題ないexeファイルが、単独実行できない
VC++2010expressで作成したC++のプログラムがあります。VS内から起動した場合には、デバッグモードでもリリースモードでも問題なく作動するのですが、VS外から、アイコンをクリックして起動すると、malloc()したメモリーをfree()したときに作動停止してしまうことがあります。確率は低いですが、正常に作動する場合もあり、また、free()をコメントアウトすると作動停止しなくなります。メモリーの扱いに問題があるのかと思い、malloc()の直後にfree()してみましたが、同様な症状が見られました。どのような原因が考えられるでしょうか。
- みんなの回答 (2)
- 専門家の回答
お礼
ありがとうございます。 おっしゃるとおり、まったく別の場所で、長さlengthの文字列に対してlength+1バイトをalloc()すべきところ、lengthバイトしかalloc()していないところを発見し、それを修正したところ、この問題も起こらなくなりました。初歩的なミスでした。コンパイル時にもエラーにならないし、実行時エラーも散発的に発生、MessageBox等のブレークポイントを入れるとうまく動いてしまったりで、発見に苦労しました。