Istnieją dwa makra: Py_INCREF(x) oraz Py_DECREF(x) które
służą do obsługi zwiększania i zmniejszania liczników odwołań.
Py_DECREF(x) również zajmuje się zwalnianiem bloku pamięci gdy
licznik osiągnie wartość zero. Dla elastyczności nie wywołuje wprost
funkcji free(), lecz wywołuje funkcję wskazywaną przez
wskaźnik w obiekcie typu zwalnianego obiektu. Dla tego celu (ale
nie tylko) każdy obiekt zawiera wskaźnik do swojego obiektu typu.
Pozostaje ważne pytanie: kiedy używać Py_INCREF(x) oraz
Py_DECREF(x)? Wprowadźmy najpierw pewne terminy. Nie można
"posiadać" obiektu, można jednak posiadać odwołanie do
obiektu. Licznik odwołań obiektu jest zdefiniowanyjako liczba
posiadanych odwołań do niego. Właściciel odwołania jest zobowiązany do
wywołania Py_DECREF() gdy odwołanie nie jest już potrzebne.
Własność odwołania może być przekazana. Istnieją trzy sposoby pozbycia
się odwołania: przekazanie, przechowanie oraz wywołanie
Py_DECREF(). Zapomnienie pozbycia się posiadanego odwołania
powoduje wyciek pamięci.
Możliwe jest również "pożyczenie"1.2 odwołania do obiektu. Procedura pożyczająca odwołanie nie musi wywoływać Py_DECREF(). Pożyczone odwołanie nie może być w użyciu procedury pożyczającej dłużej niż w posiadaniu przez właściciela. Użycie pożyczonego odwołania po tym, jak właściciel się go pozbędzie wprowadza niebezpieczeństwo użycia zwolnionej pamięci i powinno być absolutnie unikane.1.3
Zaleta pożyczania nad posiadaniem odwołania polega na tym, że nie ma potrzeby pozbywania się odwołania na różnych ścieżkach przejść kodu -- innymi słowy w przypadku pożyczania referencji nie ma ryzyka wystąpienia wycieku pamięci w przypadku przedwczesnego wyjścia z procedury. Wadą pożyczania w stosunku do posiadania odwołania jest możliwość wystąpienia sytuacji w pozornie poprawnym kodzie, gdy używamy odwołania po tym, gdy właściciel, od którego zostało pożyczone już się go pozbył.
Pożyczone odwołanie może zostać zmienione we własne poprzez wywołanie Py_INCREF(). Nie zmienia to stanu własności procedury od której pożyczono odwołanie -- tworzone jest po prostu nowe odwołanie i narzuca pełne obowiązki właściciela (nowy właściciel musi pozbyć się odwołania we właściwy sposób, podobnie jak poprzedni właściciel).