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

Does CreateInstance objects need to be expicitly destroyed in the destructor?

这是我的构造函数:

CMSATools::CMSATools()
{
    m_pInterface = NULL;

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

m_pInterface定义为:

MSAToolsLibrary::IMSAToolsLibraryInterfacePtr m_pInterface;

如果m_pInterface 是智能COM 对象指针,如CComPtr,则不需要显式销毁它。当智能指针超出范围时,例如调用 ~CMSATools 析构函数时,或者当智能指针被赋予新值时,它会减少它当前持有指针的 COM 对象的引用计数。当 COM 对象的引用计数降为 0 时,它会自行销毁。