最終更新:2019-09-18 (水) 16:27:31 (1672d)  

リリースビルド
Top / リリースビルド

C言語/C++

  • C/C++は、標準的には、NDEBUGの有無でデバッグビルドかリリースビルドかを判断する。
  • NDEBUGが定義されていた場合、例えばassertなどのマクロが無効になる。

よくある問題

ヒープ レイアウト

  • ヒープ レイアウトは、デバッグでは動作するアプリケーションがリリースではエラーとなる原因の約 90% を占めます。
  • プロジェクトをデバッグビルドする場合は、デバッグ メモリ アロケーターが使用されます。 このため、すべてのメモリ割り当ては、ガードバイトで囲まれます。 ガードバイトによって、メモリの上書きが検出されます。 リリース バージョンとデバッグ バージョンではヒープ レイアウトが異なるので、デバッグ ビルドではメモリの上書きによって問題が生じない場合でも、リリース ビルドでは致命的な問題が生じる場合があります。
  • 詳細については、「メモリ上書きのチェック」および「デバッグ ビルドを使用したメモリ上書きのチェック」を参照してください。

関連