win32とCRTで簡単なメモリリーク診断とリーク位置の発見

VC6の素のwin32プロジェクトが前提。

プログラムの最初のほうで以下を書く

ここではStdAfx.cppに書いた。_CrtSetDbgFlagを呼ぶことでプログラム終了時にリークがあると以下のように出力される。

ここにファイル名を表示させたりもできるが今回はスルー。上記の{47}に注目してコードの先頭で以下のように書く。

こうするとリークするアロックのときブレークするのでコールスタックからリーク位置が分かる。

これで判明するのはmalloc, calloc, realloc, newなどのCRT関連で、HeapAllocやSysAllocStringなどは対象外。

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)