Partilhar via


Contagem de Referência

O próprio COM não tenta remover automaticamente um objeto da memória quando pensa que o objeto não está mais sendo usado. Em vez disso, o programador de objetos deve remover o objeto não utilizado. O programador determina se um objeto pode ser removido com base em uma contagem de referência.

COM usa os IUnknown métodos, AddRef e Release, para gerenciar a contagem de referência de interfaces em um objeto. As regras gerais para chamar esses métodos são:

  • Sempre que um cliente recebe um ponteiro de interface, AddRef deve ser invocado na interface.

  • Sempre que o cliente terminar de usar o ponteiro da interface, ele deve chamar Release.

Em uma implementação simples, cada AddRef chamada aumenta e cada Release chamada diminui uma variável de contador dentro do objeto. Quando a contagem retorna a zero, a interface não tem mais usuários e fica livre para se remover da memória.

A contagem de referência também pode ser implementada para que cada referência ao objeto (não a uma interface individual) seja contada. Nesse caso, cada AddRef chamada e Release delega para uma implementação central no objeto e Release libera o objeto inteiro quando sua contagem de referência atinge zero.

Observação

Quando um objeto derivado CComObject é construído usando o operador new, a contagem de referência é 0. Portanto, uma chamada para AddRef deve ser feita após a criação bem-sucedida do objeto derivado de CComObject.

Ver também

Introdução ao COM
Gerenciando tempos de vida de objetos por meio da contagem de referência