- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我继承了一些糟糕的 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/
我继承了一些糟糕的 MSXML 解析代码(遗憾的是我没有时间重写)。这段代码充满了 COM 接口(interface)/BSTR 泄漏,原始作者要么误用了手动 COM 引用计数(这似乎总是以泪流满面)
我是一名优秀的程序员,十分优秀!