Recuento de referencias
COM no intenta quitar automáticamente un objeto de la memoria cuando cree que no se usa. Es el programador de objetos quien debe quitarlo. Para saber si un objeto se puede quitar, el objeto utiliza un recuento de referencias.
COM usa los métodos de IUnknown
, AddRef y Release, para administrar el recuento de referencias de las interfaces en los objetos. Estas son las reglas generales para llamar a ambos métodos:
Cada vez que un cliente recibe un puntero de interfaz, es preciso llamar a
AddRef
en la interfaz.Cada vez que el cliente termine de usar el puntero de interfaz, debe llamar a
Release
.
En una implementación sencilla, cada llamada a AddRef
aumenta una variable de contador en el objeto, mientras que cada llamada a Release
la disminuye. Cuando el recuento vuelve a cero, la interfaz deja de tener usuarios y se puede quitar automáticamente de la memoria.
El recuento de referencias también se puede implementar de forma que e cuenten todas las referencias al objeto (no a una interfaz individual). En este caso, cada una de las llamadas a AddRef
y Release
delega en una implementación central en el objeto y Release
libera todo el objeto cuando su recuento de referencias alcanza cero.
Nota:
Cuando se construye un objeto derivado de CComObject
mediante el new
operador, el recuento de referencias es 0. Por consiguiente, se debe realizar una llamada a AddRef
después de crear correctamente el objeto derivado de CComObject
.
Consulte también
Introducción a COM
Administración de la duración de los objetos a través del recuento de referencias