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 CComObjectoggetto 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 CComObjectderivato da .

Vedi anche

Introduzione a COM
Gestione delle durate degli oggetti tramite il conteggio dei riferimenti