2

_CrtDumpMemoryLeaks();如果您不知道,这是一个转储程序中所有内存泄漏的函数。我的当前显示我有 3632062 字节的内存泄漏(它没有被释放)。

我想知道:当分配了一定数量的字节时,有什么方法可以导致 Visual C++ Express 中断?这样我可以在分配 3632062 字节时中断,然后读取堆栈跟踪以查看我分配它的位置。

这是目前我能想到的查找内存分配位置以便修复它的唯一方法。我一直在搜索我的代码,但我找不到任何需要分配 3632062 字节的地方(因为我加载的唯一文件是 2767136 字节..)虽然我确定泄漏与我的文件有关m 操作。

找到内存泄漏源的任何想法?我正在使用本机 C++、Visual C++ 2010

4

2 回答 2

3

您可以使用_CrtSetAllocHook来跟踪总内存使用情况。

UMDH将为您提供所有堆中已分配块的列表。这可能是您想要的,因为打破给定的总分配阈值不会告诉您所有块的分配位置。

于 2010-11-18T20:11:05.030 回答
1

我以前使用过这个简单的内存泄漏检测器,并成功地发现了内存泄漏。

于 2010-11-18T20:12:24.390 回答