我的老板已经指派我检查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
如上所述:
工具
http://technet.microsoft.com/en-us/library/bb457063.aspx
对我的要求没用。 如果你能提出一个好的工具,那将是非常有帮助的,因为请求这个的客户对我们公司非常重要。 谢谢!
答案 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
,但我只获得了没有行号的不太详细的输出。