【问题标题】:How to get the current reference count of an object?如何获取对象的当前引用计数?
【发布时间】:2015-06-08 16:26:44
【问题描述】:

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

【问题讨论】:

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

标签: c++ com


【解决方案1】:

致电IUnknown::AddRef,然后立即致电IUnknown::Release。后者返回的值是当前未完成引用的计数。请注意,该值不必准确,它仅供参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2023-03-13
    • 2017-07-22
    • 2017-11-26
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多