【发布时间】:2011-04-20 04:07:33
【问题描述】:
我正在编写一些(相对简单)使用 COM 的代码,在某些对象上调用 AddRef() 并稍后对它们执行 Release()。除了彻底检查代码之外,还有什么方法可以检查我是否到处泄漏 COM 对象?
(我不能使用引用计数IBlahBlahPtrs,因为我需要将对象传递给一组不知道 COM 是什么的 API,因此不了解整个“引用计数指针” thingy - 他们像令牌一样传递指针。)
谢谢!
【问题讨论】:
-
听起来您传递 COM 指针的 API 不知道它们是 COM 指针,因此不调用 IUnknown 函数。如果是这样,您难道不能在您自己的代码中继续使用
IBlahBlahPtr对象并将指针值传递给 API(并围绕从这些 API 返回的指针实例化新的IBlahBlahPtr对象)吗? -
我们试图在几个简单的函数中公开 COM API(在本例中为 MSXML)的功能。例如,我们的“创建 XML 文档”函数需要返回实际上是一个
IXMLDOMDocument *,但就调用者所知,它只是一个以实现定义的方式标识文档的标记。相同的 API 将在 OS X 上重新实现,其中 COM 甚至不是一个东西,它会返回一个类似的特定于平台的令牌。