我正在使用 Visual CRT 的内存泄漏检测例程<crtdbg.h>
;当我调用_CrtDumpMemoryLeaks
一个分配时,程序的每次调用都会一致地报告:
{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 关于How to set breakpoints on memory allocation number的说明,我应该能够通过此调用在第 133 个分配上设置断点:
_CrtSetBreakAlloc(133);
而且我还可以在监视窗口中验证{,,msvcr90d.dll}_crtBreakAlloc
确实设置为 133。程序退出后,泄漏报告仍然列出 #133(以及一些更高的数字),但没有出现断点。为什么会这样?如何让断点发生?
潜在相关信息:
- VS2008,使用“多线程调试DLL”CRT
- 我的代码是由第三方产品加载的 DLL
- “正常”断点工作得很好;逐步完成工作正常;
__asm int 3
工作也很好。 - 也没有其他值
_crtBreakAlloc
导致断点(不是我尝试过的那些) - #133 是泄漏报告中的最低数字