在重新分配CreateInstance之前需要释放com_ptr_t吗?

时间:2011-09-02 13:54:42

标签: c++ smart-pointers createinstance

在带有_com_ptr_t成员的C ++类中,如果在同一指针上重复使用CreateInstance()以获取COM对象的新实例,而不首先执行Release(),则内存是否会泄漏?有充分证据表明,当其中一个智能指针超出范围时,ref计数会减少,而当封装指针是Detach()时则不会减少。 MSDN似乎没有提到重复CreateInstance()时引用计数的含义。

2 个答案:

答案 0 :(得分:5)

_com_ptr_tRelease()开头CreateInstance()调用_com_ptr_t后就不会发生泄漏,您可以通过阅读{{1}}实施轻松验证自己。

答案 1 :(得分:0)

CreateInstance()调用        在调用CoCreateInstance()之前_Release()。请参阅里面的实现。