gpt4 book ai didi

c++ - 追踪 COM 接口(interface)/SysAlloc 泄漏

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:08 24 4
gpt4 key购买 nike

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

我现在已经修复了代码中的许多漏洞,但我仍然发现当我调用 CoUninitialize() 时 msxml3.dll 没有卸载(如果所有接口(interface)都已消失,应该卸载)和更多内存这段代码运行后,使用率超出了我的预期。

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

最佳答案

试试 BoundsChecker(Micro Focus 产品)。如果您激活“COM 对象跟踪”功能,它会向您显示 COM 接口(interface)泄漏。它适用于 X86 和 X64 应用程序。也就是说,您的情况可能会有所不同:我现在正在努力清理该代码(这就是我通过 Google 提出您的问题的原因),我们的下一个版本应该会更好。这个特定的代码已经很多年没有被触及了。

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

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

关于c++ - 追踪 COM 接口(interface)/SysAlloc 泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12010523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com