このトピックの内容は、次の製品に該当します。
エディション |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
![]() |
![]() |
![]() |
ネイティブのみ |
![]() |
Pro、Premium、Ultimate |
![]() |
![]() |
![]() |
ネイティブのみ |
![]() |
MFC では、通常 new 演算子が使用される場所で DEBUG_NEW マクロを使用して、メモリ リークの位置を特定できます。 プログラムのデバッグ バージョンでは、DEBUG_NEW はメモリを割り当てた各オブジェクトのファイル名と行番号を記録します。 プログラムのリリース バージョンをコンパイルするときは、DEBUG_NEW は単に new 演算として機能し、ファイル名や行番号の情報を記録しません。 したがって、プログラムのリリース バージョンの実行速度が低下することはありません。
ソース ファイルで次のように DEBUG_NEW マクロを定義すると、プログラム全体を書き直さなくても、new の代わりにこのマクロを使用できます。
#define new DEBUG_NEW
オブジェクトのダンプを実行すると、DEBUG_NEW で割り当てられた各オブジェクトについて、メモリが割り当てられた場所のファイル名と行番号が表示されます。この情報を使用して、メモリ リークの原因となったコードを特定できます。
MFC フレームワークのデバッグ バージョンでは自動的に DEBUG_NEW が使用されますが、プログラマが記述するコードでは自動的には使用されません。 DEBUG_NEW を使用するには、DEBUG_NEW を明示的に使用するか、上記のように #define new を使用する必要があります。