new
管理されていない世界で作業する場合、ヒープにメモリを割り当てた場合 (たとえば、C++ でキーワードを使用して) は、自分でクリーンアップする必要があります。また、後でそれを使用しAddRef
て作成された COM コンポーネントを確認する必要があります。おそらく次のようなもの:CreateInstance
Release
SomeNameSapce::IObjPtr obj;
HRESULT hr = obj.CreateInstance(L"SomeObject");
if (hr == S_OK)
{
obj->AddRef();
m_anotherObj= obj->GetObj();
obj->Release();
}
明らかに、スマート ポインターなど (C++ で) を使用できますが、それは重要ではありません...
AddRef/Release
COM コンポーネントから取得されたオブジェクト (上記の例の m_anotherObj など)についても必要ですか?
さらにややこしいことに、この特定のコンポーネントが、実際には .NET コンポーネントであり、COM インターフェイスを介してアンマネージ コードに公開されている場合はどうなるでしょうか。ガベージ コレクターはデータを片付ける方法を知っていますか? それとも、管理されていない世界ですべて手動で行う必要がありますか?