不。您可能会发现以下链接很有用:
The Rules of the Component Object Model
.
Excerpt:
参考计数规则
规则1:必须为调用AddRef
接口的每个新副本
指针和释放调用
销毁接口指针,
后续规则除外
否则明确允许。
以下规则是常见的
规则1的非例外情况。
-
规则1a:函数的输入输出参数。调用方必须添加实际参数,因为当out值存储在其上时,它将由被调用方释放。
-
规则1b:获取全局变量。从全局变量中指针的现有副本中提取的接口指针的本地副本必须独立地进行引用计数,因为被调用函数可能会在本地副本仍处于活动状态时破坏全局中的副本。
-
规则1c:“稀薄空气”合成的新指针。使用特殊内部知识合成接口指针的函数,而不是从其他来源获得它,必须对新合成的指针执行初始addref。这些例程的重要示例包括实例创建例程、iunknown::queryinterface的实现等。
-
规则1d:返回内部存储指针的副本。指针返回后,被调用方不知道其生存期如何与指针的内部存储副本的生存期相关。因此,被调用方必须在返回指针副本之前调用addref。
规则2:零件的特殊知识
一段代码的
开始和
两个或两个生命周期的结束
接口指针的更多副本
允许AddRef/Release对
省略。
-
从COM客户机的角度来看,引用计数始终是每个接口的概念。客户机不应假定一个对象对所有接口使用相同的引用计数。
-
addref和release的返回值不应依赖,并且只应用于调试目的。
-
指针稳定性;请参阅“引用计数规则”下的“稳定此指针并保持其有效”小节中的OLE帮助文件中的详细信息。
看到优秀的“管理对象”
“OLE”技术文章的生命周期
道格拉斯·霍奇斯,第3章
《内部奥莱》,第二版,克雷格
Brockschmidt(msdn图书馆,书籍)
有关的详细信息
参考计数。