Başvuru Sayımı
COM, nesnenin artık kullanılmadığını düşündüğü bir nesneyi bellekten otomatik olarak kaldırmaya çalışmaz. Bunun yerine, nesne programcısı kullanılmayan nesneyi kaldırmalıdır. Programcı, başvuru sayısına göre bir nesnenin kaldırılıp kaldırılamayacağını belirler.
COM, bir nesnedeki IUnknown
arabirimlerin başvuru sayısını yönetmek için AddRef ve Release yöntemlerini kullanır. Bu yöntemleri çağırmak için genel kurallar şunlardır:
bir istemci bir arabirim işaretçisi aldığında,
AddRef
arabirimde çağrılmalıdır.İstemci arabirim işaretçisini kullanmayı tamamladığında çağrısı
Release
yapmalıdır.
Basit bir uygulamada, her AddRef
çağrı artar ve her Release
çağrı nesnenin içindeki bir sayaç değişkenini atar. Sayı sıfıra döndüğünde, arabirimde artık kullanıcı yoktur ve bellekten kendisini kaldırmakta serbesttir.
Başvuru sayımı, nesneye yapılan her başvurunun (tek bir arabirime değil) sayılması için de uygulanabilir. Bu durumda, her AddRef
ve Release
nesne üzerinde merkezi bir uygulama için temsilciler çağırır ve Release
başvuru sayısı sıfıra ulaştığında nesnenin tamamını serbest bırakın.
Not
CComObject
-derived nesnesi işleci kullanılarak new
oluşturulduğunda, başvuru sayısı 0'dır. Bu nedenle, -derived nesnesi başarıyla oluşturulduktan CComObject
sonra çağrısı AddRef
yapılmalıdır.