﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-行百里者半九十-随笔分类-COM</title><link>http://www.cppblog.com/gracelee/category/18265.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 04 Dec 2011 02:07:03 GMT</lastBuildDate><pubDate>Sun, 04 Dec 2011 02:07:03 GMT</pubDate><ttl>60</ttl><item><title>BSTR CComBSTR及ATL字符串转换宏</title><link>http://www.cppblog.com/gracelee/archive/2011/12/03/161380.html</link><dc:creator>小葱蘸酱</dc:creator><author>小葱蘸酱</author><pubDate>Sat, 03 Dec 2011 14:56:00 GMT</pubDate><guid>http://www.cppblog.com/gracelee/archive/2011/12/03/161380.html</guid><wfw:comment>http://www.cppblog.com/gracelee/comments/161380.html</wfw:comment><comments>http://www.cppblog.com/gracelee/archive/2011/12/03/161380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gracelee/comments/commentRss/161380.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gracelee/services/trackbacks/161380.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 总结了BSTR，CComBSTR及ATL字符串转换宏。&nbsp;&nbsp;<a href='http://www.cppblog.com/gracelee/archive/2011/12/03/161380.html'>阅读全文</a><img src ="http://www.cppblog.com/gracelee/aggbug/161380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gracelee/" target="_blank">小葱蘸酱</a> 2011-12-03 22:56 <a href="http://www.cppblog.com/gracelee/archive/2011/12/03/161380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOM编程中的接口引用计数</title><link>http://www.cppblog.com/gracelee/archive/2011/12/01/161260.html</link><dc:creator>小葱蘸酱</dc:creator><author>小葱蘸酱</author><pubDate>Wed, 30 Nov 2011 16:38:00 GMT</pubDate><guid>http://www.cppblog.com/gracelee/archive/2011/12/01/161260.html</guid><wfw:comment>http://www.cppblog.com/gracelee/comments/161260.html</wfw:comment><comments>http://www.cppblog.com/gracelee/archive/2011/12/01/161260.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/gracelee/comments/commentRss/161260.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gracelee/services/trackbacks/161260.html</trackback:ping><description><![CDATA[<div> 在C++ DOM编程中，通过DOM对象接口的各种函数获得的指向各种DOM对象的接口指针，其引用计数的变化是怎样的？在程序中该如何使用（显式或隐式调用AddRef）和释放（显式调用Release）接口指针呢？<br /> <br /> <a title="MSDN DOM sample" href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms762214%28v=VS.85%29.aspx">MSDN DOM sample</a> 上的一个示例很好的说明了这些原则，下面对这篇文章的代码做些总结说明。<br /> <br /> 总结一下，DOM接口指针使用和释放的规律为：<br /> 1.  通过DOM对象接口函数（当然也包括通过CoCreateInstance获得的IXMLDOMDocument）获得的接口指针，需要显式的调用 Release释放。这些函数如IXMLDOMDocument-&gt;createElement,  IXMLDOMNode-&gt;appendChild。<br /> 2. 对于手动赋值的接口指针（如代码中的pElemA = pElemOut），需要显式的在被赋值的指针上（pElemA）调用AddRef和Release，来增、减引用计数。<br /> 3.其他的使用则无需增减引用计数。<br /> <br /> 其他：<br /> Release()返回引用计数减1后的值，即如果原来引用计数为1，则Release()返回值为0.<br /> IXMLDOMNode-&gt;appendChild()的输出参数接口指针在值上与输入参数接口指针相同，因此二者指向同一个DOM对象。<br /></div><img src ="http://www.cppblog.com/gracelee/aggbug/161260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gracelee/" target="_blank">小葱蘸酱</a> 2011-12-01 00:38 <a href="http://www.cppblog.com/gracelee/archive/2011/12/01/161260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>