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