我正在 MSVS 2010 中开发一个 C 项目(这意味着我使用的是 malloc、calloc 和 free,而不是 C++ new 和 delete 运算符)。我需要找到内存泄漏(s?),所以我按照http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx上的步骤让程序转储内存状态运行结束。
我包括这样的库:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
我还指定每个出口都应显示调试信息,如下所示:
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
但我的调试输出如下所示:
Detected memory leaks!
Dumping objects ->
{80181} normal block at 0x016B1D38, 12 bytes long.
Data: < 7 7 8 7 > 0C D5 37 00 14 A9 37 00 38 99 37 00
{80168} normal block at 0x016ACC20, 16 bytes long.
Data: < 7 H 7 X 7 \ 7 > A8 FB 37 00 48 E9 37 00 58 C2 37 00 5C AC 37 00
...
根据文章,我应该得到文件名和行号输出,指示泄漏内存的分配位置。为什么这没有发生,我该如何解决?