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 时,它会自行销毁。
这是我的构造函数:
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 时,它会自行销毁。