【问题标题】:How to track down COM memory leak如何追踪 COM 内存泄漏
【发布时间】:2011-02-15 14:27:51
【问题描述】:

我正在尝试追踪 COM 对象中的内存泄漏,但没有发现任何明显错误。我可能错误地使用了一些 COM 包装器,但我的标准内存泄漏 (AQtime) 工具包并没有帮助我处理 COM。有没有人有任何技巧/工具来追踪 COM 内存/引用泄漏?

【问题讨论】:

    标签: c++ com memory-leaks


    【解决方案1】:

    如果您使用 ATL,您可以定义 _ATL_DEBUG_INTERFACES(请参阅MSDN entry)。这肯定会帮助您捕获任何泄漏的接口,尽管显然它无助于捕获对象内部泄漏的任何资源。

    【讨论】:

    • 如果您不使用 ATL 或类似工具,请立即开始,不要使用手动 COM 处理。
    【解决方案2】:

    检查 COM 对象是否完全释放。通常,AddRef+Release 返回当前引用计数以用于调试目的(您不应该依赖于生产代码)。

    否则,只是一般建议:减少所涉及的代码 - 您是否在刚刚创建和发布实例时发现泄漏?在某个方法调用之后?

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多