Conteggio riferimenti
COM non tenta automaticamente di rimuovere un oggetto dalla memoria quando ritiene che l'oggetto non sia più in uso. Al contrario, il programmatore di oggetti deve rimuovere l'oggetto inutilizzato. Il programmatore determina se un oggetto può essere rimosso in base a un conteggio dei riferimenti.
COM usa i IUnknown
metodi AddRef e Release per gestire il numero di riferimenti delle interfacce in un oggetto . Le regole generali per chiamare questi metodi sono:
Ogni volta che un client riceve un puntatore di interfaccia,
AddRef
deve essere chiamato sull'interfaccia .Ogni volta che il client ha terminato di usare il puntatore dell'interfaccia, deve chiamare
Release
.
In un'implementazione semplice, ogni AddRef
chiamata incrementa e ogni Release
chiamata decrementa una variabile contatore all'interno dell'oggetto . Quando il conteggio torna a zero, l'interfaccia non ha più utenti ed è libera di rimuoverla dalla memoria.
È anche possibile implementare il conteggio dei riferimenti in modo che ogni riferimento all'oggetto (non a una singola interfaccia) venga conteggiato. In questo caso, ogni AddRef
delegato e Release
chiama a un'implementazione centrale dell'oggetto e Release
libera l'intero oggetto quando il conteggio dei riferimenti raggiunge zero.
Nota
Quando un CComObject
oggetto derivato da viene costruito usando l'operatore new
, il conteggio dei riferimenti è 0. Pertanto, una chiamata a AddRef
deve essere effettuata dopo aver creato correttamente l'oggetto CComObject
derivato da .
Vedi anche
Introduzione a COM
Gestione delle durate degli oggetti tramite il conteggio dei riferimenti