Počítání odkazů

Poznámka:

Knihovna ATL (Active Template Library) se nadále podporuje. Už ale nepřidáme funkce ani aktualizujeme dokumentaci.

Samotný systém COM se automaticky nepokouší uvolnit objekt z paměti, když se domnívá, že objekt již není používán. 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í zvyšuje a každé Release volání snižuje čítačovou proměnnou ve objektu. Když se počet vrátí na nulu, rozhraní již nemá žádné uživatele a může být odstraněno 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 delegují volání na centrální implementaci objektu, a Release uvolní celý objekt, když jeho počítadlo referencí dosáhne nuly.

Poznámka:

Když je objekt odvozený od CComObject vytvořen pomocí operátoru new, počet odkazů je 0. Proto je nutné provést volání AddRef po úspěšném vytvoření objektu odvozeného z CComObject.

Viz také

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