当前位置:  开发笔记 > 编程语言 > 正文

如何使用umdh.exe在所有堆中跟踪内存泄漏?

如何解决《如何使用umdh.exe在所有堆中跟踪内存泄漏?》经验,为你挑选了0个好方法。

我有一个C ++ Windows应用程序,每个事务都会泄漏内存。使用perfmon,我可以看到每个事务的专用字节都增加了,而应用程序空闲时内存使用率却是稳定的。

按照先前关于stackoverflow的答案,我使用了Microsoft调试工具中的umdh来跟踪一次内存泄漏。但是仍然有更多的泄漏,并且umdh的结果与我的性能结果不符。

First umdh仍然报告此泄漏,堆栈跟踪为:

+   36192 ( 2082056 - 2045864)    251 allocs    BackTraceCB
+       4 (    251 -    247)    BackTraceCB allocations

    ntdll!RtlAllocateHeapSlowly+00000041
    ntdll!RtlAllocateHeap+00000E9F
    MSVCR80!malloc+0000007A

这是没有用的,因为第一个调用是malloc,没有说什么叫它。我对这种泄漏感到怀疑,因为在应用程序正在处理事务和空闲时都会报告该泄漏。但是我可以清楚地看到空闲时没有内存泄漏。并且在处理事务时报告的内存泄漏与作为性能报告处理的事务不成比例。

umhd没有显示任何其他泄漏,尽管我知道至少还有一个未显示。我刚刚从网上搜索中学到Windows应用程序可以有多个堆。

可能是umhd仅报告了其中一个堆的内存使用情况吗?例如默认堆或crt堆?

如何跟踪其他堆中的内存使用情况?

以及如何找出哪些dll /模块正在使用其他堆?

当我用尽所有选项时,将不胜感激地收到任何跟踪此问题的指针。

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有