【发布时间】:2014-03-10 08:59:17
【问题描述】:
我对使用 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 泄漏检测器仍然通过说没有检测到内存泄漏并且不提供任何信息来跟踪此报告。
【问题讨论】:
-
我也尝试过使用它,但怀疑它是否确实可以准确而详尽地查明内存泄漏:/
-
不适用于 VC++2010。刚刚测试过,它可以检测到泄漏。必须在 Properties->Additional Include (or Library) 目录中添加包含和库。
-
可能只是他们还没有为新的编译器更新它吗?
-
似乎它不适用于 VC++2013(请参阅 vld.codeplex.com/discussions/471214 的讨论)。仅适用于 2008/2010/2012。
-
有一个适合我的新版本:v2.4rc2
标签: c++ memory-leaks visual-studio-2013 visual-leak-detector