免费应用程序检查Windows x64中的内存泄漏?

时间:2013-01-09 13:04:58

标签: c++ c memory-leaks

我的老板已经指派我检查API的内存泄漏。 该应用程序是在C& C中创建的。 C ++。所以有可能使用malloc&分配内存。新。 我想在64位Windows 7中以调试器模式检查Visual Studio 2010中的内存泄漏。 任务管理器的问题在于它没有显示稳定的读数(内存增加和减少少量)。之前和之前的差异很小。在API运行之后。所以我不能肯定地说每个周期都有x个内存泄漏。

我在网上搜索过& amp;发现linux有一个很棒的工具。但是我想要一个可靠的工具来满足我的要求(Windows 7)。我遇到过这些:

http://winleak.sourceforge.net/

http://sourceforge.net/projects/duma/?source=recommended

如上所述:

check Memory leaks in windows

工具

http://technet.microsoft.com/en-us/library/bb457063.aspx

对我的要求没用。 如果你能提出一个好的工具,那将是非常有帮助的,因为请求这个的客户对我们公司非常重要。 谢谢!

2 个答案:

答案 0 :(得分:5)

我建议使用visual leak detector,因为它已经很好地服务了我好几次。您也可以尝试使用valgrind for windows(尽管我没有成功)。Dr. Memory也帮了我几次。

编辑:也看看here

答案 1 :(得分:4)

CRT库有自己的内存泄漏检测机制。输出并不像Visual Leak Detector给你的那样详细,但它比VLD快得多(在程序退出后很容易运行几十分钟)。

要启用CRT内存泄漏检测,请在stdafx.h的开头(或其他适合的地方)放置以下内容:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

在程序的退出点之前添加以下内容:

_CrtDumpMemoryLeaks();

当调用_CrtDumpMemoryLeaks()时,它会将所有可以找到的泄漏内存打印到输出窗口。

有关MSDN的更多信息。

注意:当我使用此功能时,虽然我在_CRTDBG_MAP_ALLOC的开头定义了stdafx.h,但我只获得了没有行号的不太详细的输出。