CoCreateInstance是否在我正在创建的接口上自动调用AddRef,或者我应该在之后手动调用它?
与COM签订合同时,只要你从这样的函数中获取一个对象,比如CoCreateInstance(),QueryInterface()(这是CoCreateInstance(最终调用的))等,被调用者总是在返回之前调用AddRef(),并且完成后,调用者(你)总是释放().
您可以使用CComPtr <>使这更简单,它只是做正确的事情.
现在,如果您需要将此指针移交给另一个期望在对象的生命周期内可用的对象,那么您需要在发出之前调用AddRef().
我推荐Don Box的Essential COM进一步阅读这个主题.
简而言之:不.
你并不需要调用的AddRef在你的代码.
CoCreateInstance之后COM对象具有的引用计数器为1 .
因此,如果您调用Release,则引用计数器将为0并且将丢弃COM对象.