14

我对使用 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 泄漏检测器仍然通过说没有检测到内存泄漏并且不提供任何信息来跟踪此报告。

4

1 回答 1

7

它看起来像是 VC++2013 的一个错误,当我使用 VC++2010 编译器时它确实有效。

虽然我可以想象这不是你的选择。如果它对您有帮助,您可以使用最新的 beta 版本v2.4rc2

于 2014-11-06T13:07:12.500 回答