当前位置:  开发笔记 > 编程语言 > 正文

在COM中:我应该在CoCreateInstance之后调用AddRef吗?

如何解决《在COM中:我应该在CoCreateInstance之后调用AddRef吗?》经验,为你挑选了2个好方法。

CoCreateInstance是否在我正在创建的接口上自动调用AddRef,或者我应该在之后手动调用它?



1> i_am_jorf..:

与COM签订合同时,只要你从这样的函数中获取一个对象,比如CoCreateInstance(),QueryInterface()(这是CoCreateInstance(最终调用的))等,被调用者总是在返回之前调用AddRef(),并且完成后,调用者(你)总是释放().

您可以使用CComPtr <>使这更简单,它只是做正确的事情.

现在,如果您需要将此指针移交给另一个期望在对象的生命周期内可用的对象,那么您需要在发出之前调用AddRef().

我推荐Don Box的Essential COM进一步阅读这个主题.


虽然它已经12岁了,但'Essential COM'仍然不断给予.即使作为一个.NET家伙,我仍然会回过头去看它.

2> Aaron..:

简而言之:.

并不需要调用的AddRef在你的代码.

CoCreateInstance之后COM对象具有的引用计数器为1 .

因此,如果您调用Release,则引用计数器将为0并且将丢弃COM对象.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有