0

デバッグ中にメモリの破損を引き起こすプログラムがありますが、リリースでは完全に正常に動作します。奇妙なことに、プログラムは「クラッシュ」する前にその機能を果たします (データをファイルに保存します)。これは、Visual Studio が単に私のプログラムを気に入らないということでしょうか?それとも、修復が必要な深刻なバグがあるということでしょうか? 一般に、デバッグ モードがクラッシュした場合、それは常にプログラムに問題があることを意味するのでしょうか?それとも単にプログラムがデバッグ モードで実行される方法に問題がある可能性があるので、あまり心配する必要はありませんか?

4

3 に答える 3

4

これはほぼ確実にアプリケーションのバグであり、追跡して修正する必要があります。

未定義の動作につながる多くの種類のバグがあります。一部の未定義の動作 (メモリの破損など) は、原因となったバグよりもはるかに後でプログラム内で発生する一見ランダムな障害として現れることがあります。

デバッグ モードでは、Visual Studio は、このようなエラーができるだけ早く発生し、できるだけ目立つように最善を尽くします。リリース モードでは、パフォーマンスに重点が置かれます。

https://stackoverflow.com/a/312352/367273には、デバッグとリリースの違いのいくつかの良い要約があります

于 2013-04-03T15:22:35.573 に答える
2

いいえ、大丈夫ではありません。ほとんどの場合、これは変数またはポインターが初期化されていないことを意味します。デバッグ モードでは、このような初期化されていない値はデフォルトで 0 に設定されることがよくありますが、リリース (最適化) コードではこのようなデフォルト設定は使用されません。

于 2013-04-03T15:22:41.893 に答える
0

これは、修復が必要な重大なバグがあることを意味します。最も可能性の高い理由は、初期化されていない変数を使用していることです。VS では、これがデバッグとリリースでプログラムの動作が異なる最も一般的な原因です。

于 2013-04-03T15:22:20.970 に答える