MFCを使用している時は良いが、それ以外の時はデバッグモードでメモリリークを検出してくれない。
これについては、Microsoft のサイトにも説明がある。
要約すると
#ifdef _DEBUG #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #endif
をプログラムの先頭に加える。stdafx.h に加えるのが良い。さらに、プログラムの終了直前に、
_CrtDumpMemoryLeaks();
を実行する。ただし、エラー終了など終了点が一定でない場合にも対応するには、main 関数(_tmain)の先頭で _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); を以下のように加える方が便利だ。
int _tmain(int argc, _TCHAR* argv[]) { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); ... return 0; }
ただし、