15

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

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

http://winleak.sourceforge.net/

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

正如这里提到的:

检查 Windows 中的内存泄漏

工具

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

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

4

2 回答 2

9

我建议使用视觉检漏仪,因为它多次为我服务。您也可以尝试在 windows 上使用 valgrind(尽管我在这方面收效甚微)。记忆博士也帮助了我几次。

编辑:也看看这里

于 2013-01-09T13:55:36.077 回答
4

CRT 库有自己的内存泄漏检测机制。输出没有 Visual Leak Detector 提供的那么详细,但它比 VLD 快很多(在程序退出后轻松运行数十分钟)。

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

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

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

_CrtDumpMemoryLeaks();

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

有关MSDN的更多信息。

注意:当我使用它时,我只得到了没有行号的不太详细的输出,尽管我_CRTDBG_MAP_ALLOCstdafx.h.

于 2013-12-18T21:06:22.903 回答