Нужно ли уничтожать объекты CreateInstance в деструкторе?

Это мой конструктор:

CMSATools::CMSATools()
{
m_pInterface = NULL;

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

m_pInterface определяется:

MSAToolsLibrary::IMSAToolsLibraryInterfacePtr m_pInterface;

0

Решение

Если m_pInterface является указателем смарт-объекта COM, как CComPtr, вам не нужно явно уничтожать его. Когда умный указатель выходит из области видимости, например, когда ~CMSATools вызывается деструктор, или когда интеллектуальному указателю присваивается новое значение, он уменьшает счетчик ссылок COM-объекта, на который он в данный момент содержит указатель. Когда счетчик ссылок COM-объекта падает до 0, он разрушается сам.

2

Другие решения

Других решений пока нет …