在VS C ++ 6.0中,哪些调试工具可以很好地找到内存泄漏的位置?

时间:2012-05-16 20:00:57

标签: c++ visual-studio visual-c++ memory-leaks

我的程序最终消耗所有内存和崩溃...通过代码查看,我找不到任何能够做到这一点的突出显示。

3 个答案:

答案 0 :(得分:1)

您是否可以修改代码以使用mallocfree的调试版本?如果是,请检查_malloc_dbg_free_dbg

(您可以根据这些功能编写自己的newdelete运算符。)

我记得VS 6.0没有_realloc_dbg

#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC 1
#include <Crtdbg.h>
#define malloc(size) _malloc_dbg(size,_CLIENT_BLOCK,__FILE__,__LINE__)
#define free(addr) _free_dbg(addr,_CLIENT_BLOCK)
#endif

答案 1 :(得分:1)

您可以尝试BoundsChecker(现在是DevPartner):http://www.microfocus.com/products/micro-focus-developer/devpartner/index.aspx

您将能够在代码中看到内存泄漏,接口泄漏和其他问题。

答案 2 :(得分:1)

根据泄漏的类型,您可以使用umdh或debugdiag作为简单工具,否则我会建议使用windbg。所有这些都是免费的,是Windows调试工具的一部分,谷歌可以获得所有这些工具的教程。 windbg中自动泄漏查找的命令是!heap -l。