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 AddRefRelease Stellvertretungen für eine zentrale Implementierung des Objekts aufgerufen und Release das gesamte Objekt freigegeben, wenn die Referenzanzahl null erreicht.

Hinweis

Wenn ein abgeleitetes CComObjectObjekt mithilfe des new Operators erstellt wird, ist die Referenzanzahl 0. Daher muss nach dem erfolgreichen Erstellen des CComObjectabgeleiteten Objekts ein Aufruf AddRef ausgeführt werden.

Siehe auch

Einführung in COM
Verwalten von Objektlebensdauern über Referenzzählung