Verweisanzahl
COM selbst versucht nicht automatisch, ein Objekt aus dem Arbeitsspeicher zu entfernen, wenn das Objekt nicht mehr verwendet wird. Stattdessen muss der Objektprogrammierer das nicht verwendete Objekt entfernen. Der Programmierer bestimmt, ob ein Objekt basierend auf einer Verweisanzahl entfernt werden kann.
COM verwendet die IUnknown
Methoden AddRef und Release, um die Referenzanzahl von Schnittstellen für ein Objekt zu verwalten. Die allgemeinen Regeln zum Aufrufen dieser Methoden sind:
Wenn ein Client einen Schnittstellenzeiger empfängt,
AddRef
muss er auf der Schnittstelle aufgerufen werden.Wenn der Client den Schnittstellenzeiger verwendet hat, muss er aufgerufen werden
Release
.
In einer einfachen Implementierung erhöht sich jeder AddRef
Aufruf und jeder Release
Aufruf dekrementiert eine Zählervariable innerhalb des Objekts. Wenn die Anzahl auf Null zurückgibt, verfügt die Schnittstelle nicht mehr über Benutzer und kann sich selbst aus dem Arbeitsspeicher entfernen.
Die Verweiszählung kann auch implementiert werden, sodass jeder Verweis auf das Objekt (nicht auf eine einzelne Schnittstelle) gezählt wird. In diesem Fall werden alle AddRef
Release
Stellvertretungen für eine zentrale Implementierung des Objekts aufgerufen und Release
das gesamte Objekt freigegeben, wenn die Referenzanzahl null erreicht.
Hinweis
Wenn ein abgeleitetes CComObject
Objekt mithilfe des new
Operators erstellt wird, ist die Referenzanzahl 0. Daher muss nach dem erfolgreichen Erstellen des CComObject
abgeleiteten Objekts ein Aufruf AddRef
ausgeführt werden.
Siehe auch
Einführung in COM
Verwalten von Objektlebensdauern über Referenzzählung