需要在使用CreateInstance重新分配之前释放com_ptr_t吗? 在一个带有类成员的C++类中,如果CeaTestSnices()在相同的指针上重复使用,将不会出现内存泄漏,从而获得COM对象的新实例,而不首先执行ReleSead()。有很好的文档证明,当这些智能指针中的一个超出范围时,引用计数会减少,而当封装的指针被分离()时,引用计数不会减少。MSDN似乎没有提到重复CreateInstance()时引用计数的含义。

需要在使用CreateInstance重新分配之前释放com_ptr_t吗? 在一个带有类成员的C++类中,如果CeaTestSnices()在相同的指针上重复使用,将不会出现内存泄漏,从而获得COM对象的新实例,而不首先执行ReleSead()。有很好的文档证明,当这些智能指针中的一个超出范围时,引用计数会减少,而当封装的指针被分离()时,引用计数不会减少。MSDN似乎没有提到重复CreateInstance()时引用计数的含义。,c++,smart-pointers,createinstance,C++,Smart Pointers,Createinstance,不会发生泄漏,因为\u com\u ptr\t调用Release()在CreateInstance()的开头,您可以通过阅读\u com\u ptr\u t实现轻松验证自己。由于\u com\u ptr\u t在CreateInstance()的开头调用Release(),因此不会发生泄漏您可以通过阅读\u com\u ptr\t实现来轻松验证自己。CreateInstance()调用 _在调用CoCreateInstance()之前释放()。请参阅内部的实现。CreateInstance()调

不会发生泄漏,因为
\u com\u ptr\t
调用
Release()
CreateInstance()
的开头,您可以通过阅读
\u com\u ptr\u t
实现轻松验证自己。

由于
\u com\u ptr\u t
CreateInstance()的开头调用
Release()
,因此不会发生泄漏
您可以通过阅读
\u com\u ptr\t
实现来轻松验证自己。

CreateInstance()调用 _在调用CoCreateInstance()之前释放()。请参阅内部的实现。

CreateInstance()调用
_在调用CoCreateInstance()之前释放()。请参阅内部的实现。

谢谢sharptooth。在VisualStudioIDE中,我很难将_com_ptr_t::CreateInstance跟踪到源代码,可能是因为它是一个模板。引用MSDN将comip.h标识为感兴趣的源文件。我花了一分钟的时间才意识到备用原型调用了主版本(以CLSID作为第一个参数),它在执行任何其他操作之前显然会调用_Release()。再次感谢,谢谢你,夏普牙。在VisualStudioIDE中,我很难将_com_ptr_t::CreateInstance跟踪到源代码,可能是因为它是一个模板。引用MSDN将comip.h标识为感兴趣的源文件。我花了一分钟的时间才意识到备用原型调用了主版本(以CLSID作为第一个参数),它在执行任何其他操作之前显然会调用_Release()。再次感谢。