VisualCRTのメモリリーク検出ルーチンを使用してい<crtdbg.h>
ます。私が呼び出す_CrtDumpMemoryLeaks
と、プログラムのすべての呼び出しで1つの割り当てが一貫して報告されます。
{133} normal block at 0x04F85628, 56 bytes long.
Data: < > B0 81 F8 04 B0 81 F8 04 B0 81 F8 04 CD CD CD CD
アドレスは異なりますが、{133}
常に同じです。
メモリ割り当て番号にブレークポイントを設定する方法に関するMSDNの指示によると、この呼び出しで133番目の割り当てにブレークポイントを設定できるはずです。
_CrtSetBreakAlloc(133);
また、実際に133に設定されているウォッチウィンドウで確認することもできます{,,msvcr90d.dll}_crtBreakAlloc
。プログラムが終了した後も、リークレポートには#133が(いくつかの高い数値とともに)表示されますが、ブレークポイントは発生しません。なぜこれが発生する可能性があり、ブレークポイントを発生させるにはどうすればよいですか?
潜在的に関連する情報:
- VS2008、「マルチスレッドデバッグDLL」CRTを使用
- 私のコードはサードパーティ製品によってロードされるDLLです
- 「通常の」ブレークポイントは問題なく機能します。ステップスルーは正常に機能します。
__asm int 3
うまくいきます。 - の他の値
_crtBreakAlloc
もブレークポイントを引き起こしません(とにかく試したものではありません) - #133はリークレポートの最小数です