Zliczanie odwołań
Sam com nie próbuje automatycznie usunąć obiektu z pamięci, gdy uważa, że obiekt nie jest już używany. Zamiast tego programista obiektów musi usunąć nieużywany obiekt. Programista określa, czy obiekt można usunąć na podstawie liczby odwołań.
Com używa IUnknown
metod AddRef i Release do zarządzania liczbą odwołań interfejsów w obiekcie. Ogólne reguły wywoływania tych metod to:
Za każdym razem, gdy klient otrzymuje wskaźnik interfejsu,
AddRef
musi być wywoływany w interfejsie.Za każdym razem, gdy klient zakończył korzystanie ze wskaźnika interfejsu, musi wywołać metodę
Release
.
W prostej implementacji każde AddRef
wywołanie zwiększa i każde Release
wywołanie dekrementuje zmienną licznika wewnątrz obiektu. Gdy liczba powróci do zera, interfejs nie ma już żadnych użytkowników i jest wolny do usunięcia się z pamięci.
Zliczanie odwołań można również zaimplementować, aby każde odwołanie do obiektu (nie do pojedynczego interfejsu) było liczone. W takim przypadku każdy AddRef
obiekt i Release
wywołuje delegatów do centralnej implementacji obiektu i Release
zwalnia cały obiekt, gdy liczba odwołań osiągnie zero.
Uwaga
CComObject
Gdy obiekt pochodny jest konstruowany przy użyciu new
operatora , liczba odwołań wynosi 0. W związku z tym należy wykonać AddRef
wywołanie po pomyślnym utworzeniu obiektu pochodnego CComObject
.
Zobacz też
Wprowadzenie do modelu COM
Zarządzanie okresami istnienia obiektów za pomocą zliczania odwołań