Contagem de referências

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

O COM usa os métodos, IUnknown, AddRef e Release, para gerenciar a contagem de referências das interfaces em um objeto. As regras gerais de chamada desses métodos são:

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

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

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

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

Observação

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

Confira também

Introdução ao COM
Gerenciando o tempo de vida do objeto por meio da contagem de referências