-
ソースファイルの先頭に次のように記述します。
-----
#include <crtdbg.h>
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#define malloc(p1) _malloc_dbg(p1,_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
-----
malloc&freeのメモリリークも検出できるようになってますが、そんなもの使わないよという人は削っても良いでしょう。
-
さらに、プログラムのどこか(初期化あたり)に、次のように記述します。
-----
_CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
-----
これにより、プログラム終了時に発生している全てのメモリリークを(通常は)デバッグ出力に出してくれます。
この二つの方法があれば、バグなんてあっさり検出できます!すみません。嘘です。でも多少の手助けにはなると思いますのであとはひたすら気合でデバッグしましょう。