Visual Leak Detector没有报告泄漏。

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 Leak Detector 仍然会跟随此报告,显示“未检测到内存泄漏”并且不提供任何信息。


我也尝试过使用它,对于它是否能够准确地和彻底地定位内存泄漏还有怀疑 :/ - JBL
对于VC++2010不适用。我刚测试过,它可以正确检测泄漏。需要在属性->附加包含(或库)目录中添加包含和库。 - SChepurin
也许只是因为他们还没有为新编译器更新它? - Kittenmittons
1
似乎它不适用于VC++2013(请参见http://vld.codeplex.com/discussions/471214中的讨论)。仅适用于2008/2010/2012。 - SChepurin
1
这里有一个新版本适用于我:v2.4rc2 - Roeland Van Heddegem
1个回答

7
看起来这是VC++2013的一个bug,当我使用VC++2010编译器时它可以工作。
尽管我可以想象这对你来说可能不是一个选项。如果有帮助的话,你可以使用最新的beta版本v2.4rc2

1
现在版本2.5已经发布,它可以兼容2015版本。对我来说很好用。 - Tomashu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接