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