Delen via


Referentietelling

COM zelf probeert een object niet automatisch uit het geheugen te verwijderen wanneer het denkt dat het object niet meer wordt gebruikt. In plaats daarvan moet de objectprogrammeur het ongebruikte object verwijderen. De programmeur bepaalt of een object kan worden verwijderd op basis van een verwijzingsaantal.

COM gebruikt de IUnknown methoden AddRef en Release om het aantal referentie-interfaces op een object te beheren. De algemene regels voor het aanroepen van deze methoden zijn:

  • Wanneer een client een interfaceaanwijzer ontvangt, AddRef moet deze worden aangeroepen op de interface.

  • Wanneer de client klaar is met het gebruik van de interfacepointer, moet deze Release aanroepen.

In een eenvoudige implementatie verhoogt elke AddRef-aanroep en verlaagt elke Release-aanroep een tellervariabele binnen het object. Wanneer het aantal teruggaat naar nul, heeft de interface geen gebruikers meer en is het vrij om zichzelf uit het geheugen te verwijderen.

Verwijzing tellen kan ook worden geïmplementeerd, zodat elke verwijzing naar het object (niet naar een afzonderlijke interface) wordt geteld. In dit geval roept elke AddRef- en Release-aanroep een centrale implementatie op van het object, en Release verwijdert het hele object wanneer het aantal referenties nul bereikt.

Opmerking

Wanneer een CComObject-afgeleide object wordt samengesteld met behulp van de new operator, is het aantal verwijzingen 0. Daarom moet een aanroep naar AddRef gedaan worden nadat het CComObject-afgeleide object met succes is gemaakt.

Zie ook

Inleiding tot COM-
Levensduur van objecten beheren via referentietelling