C++ 如何获取对象的当前引用计数?

C++ 如何获取对象的当前引用计数?,c++,com,C++,Com,我有一个指向COM对象的指针(在C++中)。是否有方法获取指针指向的对象的当前引用计数?调用IUnknown::AddRef,然后立即IUnknown::Release。后者返回的值是未完成引用的当前计数。请注意,该值不一定要准确,它只是提供信息。我想不出您需要知道的情况。这就是引用点计数对象的全部内容。引用计数是被调用对象的责任(在IUnknown的AddRef和Release中)AddRef返回实际计数(即使您被警告仅用于测试目的),那么您唯一可以做的就是将IUnknown包装在自定义Obj

我有一个指向COM对象的指针(在C++中)。是否有方法获取指针指向的对象的当前引用计数?

调用
IUnknown::AddRef
,然后立即
IUnknown::Release
。后者返回的值是未完成引用的当前计数。请注意,该值不一定要准确,它只是提供信息。

我想不出您需要知道的情况。这就是引用点计数对象的全部内容。引用计数是被调用对象的责任(在
IUnknown
AddRef
Release
中)
AddRef
返回实际计数(即使您被警告仅用于测试目的),那么您唯一可以做的就是将
IUnknown
包装在自定义
ObjectFactoryWithReferenceCounting
中,并在其中跟踪它们……最多是繁琐的(并且很难保证线程安全)@AdrianoRepetti:我认为这是不对的。您需要通过任何接口计算
AddRef
,包括您甚至没有持有的接口(对象可能是共享的)。@MSalters我同意,只有在您拥有它们和/或您可以更改它们的接口时,它才起作用。@paddy想不出您需要知道的情况吗?认真地调试怎么样?对象跟踪/使用情况如何?是的-可以有临时上下文级别的引用,但是如果您编写的代码比Hello World更复杂,并且您需要更多的信息,那么它会很有用。如果不添加/释放引用或不使用智能对象,非托管代码(例如C++)中的任何内容都很容易被破坏,特别是在一个可能忘记规则的缺乏经验的程序员团队中工作时。这个问题是正确的。不要做任何假设。