首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >追踪COM接口/SysAlloc泄漏

追踪COM接口/SysAlloc泄漏
EN

Stack Overflow用户
提问于 2012-08-18 01:38:12
回答 1查看 535关注 0票数 1

我继承了一些糟糕的MSXML解析代码(遗憾的是,我没有时间重写它们)。这段代码充满了COM接口/BSTR泄漏,其中原始作者误用了手动COM引用计数(似乎总是以泪水结束),或者他们使用了COM智能指针,但错误地使用了它们,以至于发生了泄漏。

我现在已经修复了代码中的许多泄漏,但我仍然发现,当我调用CoUninitialize()时,msxml3.dll没有卸载(如果所有接口都消失了,就应该卸载),并且在此代码运行后使用的内存比我预期的要多。

我现在已经达到了手动发现的极限,我正在寻找一种可以识别这类泄漏的调试解决方案。我过去用过umdh来发现常规的泄漏,效果很好,但这对COM泄漏似乎没有太大的帮助。有谁能推荐一个好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 20:43:01

试试BoundsChecker (一款Micro Focus产品)。如果您激活了"COM对象跟踪“功能,它将显示COM接口泄漏。它可以在X86和X64应用程序上运行。这就是说,你的里程数可能会有所不同:我现在正在致力于清理代码(这就是我通过Google提出问题的原因),我们的下一个版本应该会更好。这个特殊的代码已经有很多年没人碰过了。

关于SysAlloc泄漏,这是一个困难的领域,因为IMalloc类缓存释放的内存的方式,而不是真正释放它。在时间和中断允许的情况下,我仍然在那个领域工作。

披露(如果还不明显):我在Micro Focus工作,特别是在BoundsChecker上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12010523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档