我有一个c++ windows应用程序,它会在每个事务中泄漏内存。使用perfmon,我可以看到私有字节随着每个事务的增加而增加,当应用程序处于空闲状态时,内存使用量是持平的。
根据以前关于堆栈溢出的答案,我使用microsoft调试工具中的umdh跟踪一个内存泄漏。然而,仍然有更多的漏洞,而且umdh的结果与我的perfmon结果不匹配。
首先,umdh仍然报告此泄漏,堆栈跟踪是:
+ 36192 ( 2082056 - 2045864) 251 allocs BackTraceCB
+ 4 ( 251 - 247) BackTraceCB allocations
ntdll!RtlAllocateHeapSlowly+00000041
ntdll!RtlAllocateHeap+00000E9F
MSVCR80!malloc+0000007A这是没用的,因为第一个调用是malloc,它没有说什么叫它。我对此漏洞表示怀疑,因为无论是在应用程序处理事务时还是在空闲时,都会报告此漏洞。但我能清楚地看到,当内存空闲时,内存没有泄漏。处理事务时报告的内存泄漏与perfmon报告处理的事务不成比例。
食环署并没有显示任何其他的漏洞,虽然我知道至少还有一项没有显示。我刚刚从搜索网络中了解到,一个windows应用程序可以有多个堆。
当我没有选择的时候,任何追踪这个问题的指示都会被感激地收到。
发布于 2009-04-03 09:09:43
我经常进行代码检查,以查找内存泄漏。
我想找的东西是:
当然,根据您必须查看的代码库,代码评审可能会很耗时。但是,如果可以限制需要查找指针分配/使用的区域,则可能会有所回报。在我的大多数情况下都是这样。
https://stackoverflow.com/questions/712975
复制相似问题