メモリリーク検出方法の一つ
VCで開発をしていると、プログラムの終了時に
{107} normal block at hogehoge, ?? bytes long
とかいうメッセージ(107という数値はプログラムによります)が出ることが良く有ります。これは107ブロック目に確保したメモリを解放していませんよていう意味です。これがどこで確保されたのかを検出する方法があります。てかしばらく忘れていたのですがふと使う機会があったのでメモをしておきます。
まずプログラム開始直後にブレークポイントをしかけておいてブレークします。
次にデバッガの[ウォッチ]ウィンドウの「名前」に「_crtBreakAlloc」と入力し、「値」に「107」と入力して継続実行します。
すると、107ブロック目を確保しようとした時に自動的にブレークポイントが引っかかってくれます。
もしくはプログラムの開始直後に
_CrtSetBreakAlloc(107);
というコードを埋めても同じようです。
これは、必ず同じタイミングでメモリを確保するようなプログラムの時には非常に有用なテクニックだと思いますが、ぐぐっても余り出てこないのでとりあえずメモ代わりに公開しておきます。