Udostępnij za pośrednictwem


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

CComObjectGdy 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ń