Sdílet prostřednictvím


Počítání odkazů

Samotný objekt COM se automaticky nepokouší odebrat z paměti, pokud si myslí, že se objekt už nepoužívá. Místo toho musí programátor objektu odebrat nepoužívaný objekt. Programátor určuje, zda lze objekt odebrat na základě počtu odkazů.

Com používá IUnknown metody AddRef a Release ke správě referenčního počtu rozhraní objektu. Obecná pravidla pro volání těchto metod jsou:

  • Pokaždé, když klient obdrží ukazatel rozhraní, AddRef musí být volána v rozhraní.

  • Pokaždé, když klient dokončí použití ukazatele rozhraní, musí volat Release.

V jednoduché implementaci každé AddRef volání zvýší a každé Release volání dekrementuje proměnnou čítače uvnitř objektu. Když se počet vrátí na nulu, rozhraní již nemá žádné uživatele a je zdarma odebrat sám sebe z paměti.

Počítání odkazů lze také implementovat tak, aby se počítá každý odkaz na objekt (nikoli na jednotlivá rozhraní). V tomto případě každý AddRef a Release volá delegáty na centrální implementaci objektu a Release uvolní celý objekt, když jeho počet odkazů dosáhne nuly.

Poznámka:

Při vytvoření -odvozeného CComObjectobjektu pomocí operátoru new je počet odkazů 0. Proto je nutné provést volání AddRef po úspěšném vytvoření -odvozeného objektu CComObject.

Viz také

Úvod do modelu COM
Správa životností objektů prostřednictvím počítání odkazů