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 CComObject
objektu 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ů