次の方法で共有


参照カウント

COM 自体は、オブジェクトが使用されなくなったと判断したとき、メモリからオブジェクトを自動的に削除しようとしません。 代わりに、使用されていないオブジェクトはオブジェクト プログラマで削除する必要があります。 プログラマは、参照カウントに基づいてオブジェクトを削除できるかどうかを判断します。

COM では IUnknown メソッドの AddRefRelease を使用し、オブジェクト上のインターフェイスの参照カウントを管理します。 これらのメソッドを呼び出すための一般的な規則は次のとおりです。

  • クライアントがインターフェイス ポインターを受け取るたびに、インターフェイス上で AddRef が呼び出される必要があります。

  • クライアントはインターフェイス ポインターの使用を終了するたびに、Release を呼び出す必要があります。

単純な実装では、オブジェクト内のカウンター変数が AddRef が呼び出されるたびにインクリメントされ、Release が呼び出されるたびにデクリメントされます。 カウントがゼロに戻ると、インターフェイスにはユーザーが含まれなくなり、インターフェイスはそれ自体をメモリから自由に削除できます。

参照カウントは、(個々のインターフェイスではなく) オブジェクトへの各参照がカウントされるように実装することもできます。 この場合、AddRef および Release 呼び出しはそれぞれ、オブジェクト上で中心の実装にデリゲートされ、その参照カウントがゼロに到達すると、Release によってオブジェクト全体が解放されます。

Note

CComObject 派生オブジェクトが new 演算子を使用して構築されるとき、参照カウントは 0 になります。 したがって、AddRef は、CComObject 派生オブジェクトが正常に作成された後に呼び出す必要があります。

関連項目

COM の概要
参照カウントによるオブジェクトの有効期間の管理