我的程序最终消耗所有内存和崩溃...通过代码查看,我找不到任何能够做到这一点的突出显示。
答案 0 :(得分:1)
您是否可以修改代码以使用malloc
和free
的调试版本?如果是,请检查_malloc_dbg和_free_dbg。
(您可以根据这些功能编写自己的new
和delete
运算符。)
我记得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。