我正在编写一些代码(相对简单),使用COM,在某些对象上调用AddRef()并在以后释放它们。除了真正地彻底检查代码之外,还有什么方法可以检查我是否到处都在泄漏COM对象?

(我不能使用引用计数的IBlahBlahPtr,因为我需要将对象传递给一组API,这些API不知道COM是什么,因此根本不理解整个“引用计数指针”-它们传递了指针就像 token 一样。)

谢谢!

最佳答案

它与检查任何C或C++代码中的泄漏没有什么不同。 MSDN库文章is here使用<crtdbg.h>来检测泄漏。如果没有足够多的IUnknown::Release()调用,您将获得类工厂的泄漏报告。

引用计数接口(interface)指针是COM的一项硬性要求,您不能仅仅忽略它。如果客户端代码没有执行此操作,则在传递指向该代码的指针之前,您必须自己进行处理。知道何时不再使用指针是一个棘手的问题。

关于c++ - 如何确定我是否泄漏了COM对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5725380/

10-17 02:10