<2011年12月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

  • 随笔 - 24
  • 文章 - 0
  • 评论 - 17
  • 引用 - 0

常用链接

留言簿(4)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜

DOM编程中的接口引用计数
在C++ DOM编程中,通过DOM对象接口的各种函数获得的指向各种DOM对象的接口指针,其引用计数的变化是怎样的?在程序中该如何使用(显式或隐式调用AddRef)和释放(显式调用Release)接口指针呢?

MSDN DOM sample 上的一个示例很好的说明了这些原则,下面对这篇文章的代码做些总结说明。

总结一下,DOM接口指针使用和释放的规律为:
1. 通过DOM对象接口函数(当然也包括通过CoCreateInstance获得的IXMLDOMDocument)获得的接口指针,需要显式的调用 Release释放。这些函数如IXMLDOMDocument->createElement, IXMLDOMNode->appendChild。
2. 对于手动赋值的接口指针(如代码中的pElemA = pElemOut),需要显式的在被赋值的指针上(pElemA)调用AddRef和Release,来增、减引用计数。
3.其他的使用则无需增减引用计数。

其他:
Release()返回引用计数减1后的值,即如果原来引用计数为1,则Release()返回值为0.
IXMLDOMNode->appendChild()的输出参数接口指针在值上与输入参数接口指针相同,因此二者指向同一个DOM对象。

posted on 2011-12-01 00:38 小葱蘸酱 阅读(1861) 评论(1)  编辑 收藏 引用 所属分类: COM

评论

# re: DOM编程中的接口引用计数 2011-12-01 18:42 Todd

既然是C++,果断要RAII,建议使用CComPtr或者自己定义个类似的自动指针类。
  回复  更多评论    

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理