c++ - CreateInstance 对象是否需要在析构函数中明确销毁?

标签 c++ createinstance

这是我的构造函数:

CMSATools::CMSATools()
{
    m_pInterface = NULL;

    HRESULT hr;
    hr = m_pInterface.CreateInstance(__uuidof(MSAToolsLibrary::MSAToolsLibraryClass));
    if (FAILED(hr))
    {
        // TODO     }
}

m_p接口(interface)定义:

MSAToolsLibrary::IMSAToolsLibraryInterfacePtr m_pInterface;

最佳答案

如果 m_pInterface 是一个智能 COM 对象指针,如 CComPtr ,您不需要显式销毁它。当智能指针超出作用域时,比如当 ~CMSATools 析构函数被调用时,或者当智能指针被赋予新值时,它会减少它当前持有的 COM 对象的引用计数指向的指针。当 COM 对象的引用计数降为 0 时,它会 self 销毁。

关于c++ - CreateInstance 对象是否需要在析构函数中明确销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504475/

相关文章:

c++ - 为什么 "inline"与 "virtual"不兼容

c++ - 您必须从较早版本的 BDS [$(BDS)\include\atl\*.*] 复制 ATL 文件才能使用 ATL?

文件的 C++ OpenSSL 哈希值不正确

c++ - 来自具有 std::unordered_multimap 等效键的元素的随机元素

C# Activator createInstance 用于扩展类

c# 字符串到我可以从中调用函数的类

c++ - 解释c中的头文件路径

c# - Activator.CreateInstance 上的 TargetInvocationException

c# - 在另一个 AppDomain 中创建一个类型的实例

c# - 动态定义类型化数据集?