Condividi tramite


Reference Counting

COM stessa automaticamente non tenta di rimuovere un oggetto dalla memoria quando si prevede che l'oggetto non sia più utilizzato. Invece, il programmatore dell'oggetto deve rimuovere l'oggetto inutilizzato. Il programmatore determina se un oggetto può essere rimosso in base a un conteggio dei riferimenti.

COM vengono utilizzati i metodi IUnknown, AddRef e Release, gestire il conteggio dei riferimenti delle interfacce in un oggetto. Le regole generali per chiamare questi metodi sono:

  • Ogni volta che un client riceve un puntatore a interfaccia, AddRef deve essere chiamato sull'interfaccia.

  • Ogni volta che il client ha completato utilizzando il puntatore a interfaccia, deve chiamare Release.

In un'implementazione semplice, gli incrementi di ogni chiamata AddRef e ogni Release chiamano i decrementi una variabile contatore interno dell'oggetto. Quando si torna a conteggio zero, l'interfaccia non ha più alcun utente e sono liberi di rimuovere se stesso dalla memoria.

Il conteggio dei riferimenti può essere implementato in modo da contare ogni riferimento all'oggetto (non a una singola interfaccia). In questo caso, ogni AddRef e i delegati di chiamata Release a un'implementazione centrale sull'oggetto e Release libera l'intero oggetto quando le relative intervalli zero di conteggio dei riferimenti.

Nota

Quando CComObjectl'oggetto derivato da viene costruito utilizzando l'operatore new, il conteggio dei riferimenti è 0.Di conseguenza, una chiamata a AddRef deve essere correttamente dopo la creazione CComObjectoggetto derivato da.

Vedere anche

Riferimenti

Introduzione a COM

Managing Object Lifetimes through Reference Counting