Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

VisualStudio(C++)でメモリリークを検知する

VisualStudio(C++)でメモリリークを検知する方法です。

コンソールアプリの場合はmain関数の先頭に以下を追加してデバッグ実行するだけです。


_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

_CRTDBG_LEAK_CHECK_DF を指定することにより、アプリが終了した時点で解放されていないヒープがデバッグ出力画面に表示されます。

このフラグを使用すると、staticに宣言した変数も解放後にチェックが走るため便利です。

表示される{18}のような番号は、メモリ割り当て番号で、何番目にアローケートされたかを意味しています。
どこでアローケートされたものか分からない場合に使います。
_CrtSetDbgFlag()の直後に、
_CrtSetBreakAlloc(18);
を追加すると、18番目にアローケートされたところにブレークポイントが設定されそこで止まってくれます。

CRT ライブラリを使用したメモリのリークを検出 - Visual Studio | Microsoft Docs