COM オブジェクトの寿命管理 ~ 作ってわかる COM の基礎
IUnknown インターフェイスの AddRef メソッドと Release メソッドは、「いつオブジェクトをメモリから解放してよいか」とか、 「いつ DLL をアンロードしてよいか」 などを判断するため、すなわち 寿命管理 をするために使います。
COM は参照カウンタで寿命管理するのですが、 ある COM オブジェクトへの参照が増えたときに、参照カウンタを増やし、参照されなくなったときに参照カウンタを減らします。 この参照カウンタが0になったときに、そのオブジェクトをメモリから解放したり、DLL をアンロードしたりします。
参照カウンタの実装を失敗すると、不要になったオブジェクトが解放されずメモリリークが発生したり、 あるいはまだ使用中なのにメモリから解放されて、アクセス違反の原因になったりします。
« 前の記事 | 次の記事 » | |
IUnknown とは? | COM コンポーネントの登録機能 |