我对使用Visual Studio 2013还比较新,正在尝试让Visual Leak Detector(版本2.3)工作,以便检查我的项目是否存在内存泄漏。
我已经安装了它,并将 C:\Program Files (x86)\Visual Leak Detector\include 添加到我的包含目录中
以及将 C:\Program Files (x86)\Visual Leak Detector\lib\Win32 添加到我的库目录中(都是针对调试模式)。
我使用调试菜单(或按f5键)构建并运行以下简单程序:
#include <iostream>
#include <vld.h> //visual leak detector
using namespace std;
int main()
{
for (int i = 0; i < 1000000; i++)
int *ptr = new int(100);
return 0;
}
泄漏在这里很明显(且是故意的)用于测试功能,但这是我得到的报告:
泄露在这里非常明显(而且是有意为之),用于测试功能,但这是我收到的报告:
Visual Leak Detector Version 2.3 installed.
The thread 0x38ac has exited with code 0 (0x0).
No memory leaks detected.
Visual Leak Detector is now exiting.
The program '[8136] Test.exe' has exited with code 0 (0x0).
任何想法吗?编辑:我应该指出,添加#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
到我的代码开头和
_CrtDumpMemoryLeaks();
在 main() 函数结束之前,会导致 Visual Studio 内置的泄漏检测报告泄漏。但是,Visual Leak Detector 仍然会跟随此报告,显示“未检测到内存泄漏”并且不提供任何信息。