Nombre de références
COM lui-même n’essaie pas automatiquement de supprimer un objet de la mémoire lorsqu’il pense que l’objet n’est plus utilisé. Au lieu de cela, le programmeur d’objets doit supprimer l’objet inutilisé. Le programmeur détermine si un objet peut être supprimé en fonction d’un nombre de références.
COM utilise les IUnknown
méthodes, AddRef et Release, pour gérer le nombre d’interfaces sur un objet. Les règles générales d’appel de ces méthodes sont les suivantes :
Chaque fois qu’un client reçoit un pointeur d’interface,
AddRef
il doit être appelé sur l’interface.Chaque fois que le client a terminé d’utiliser le pointeur d’interface, il doit appeler
Release
.
Dans une implémentation simple, chaque AddRef
appel incrémente et chaque Release
appel décrémente une variable de compteur à l’intérieur de l’objet. Lorsque le nombre revient à zéro, l’interface n’a plus d’utilisateurs et est libre de se supprimer de la mémoire.
Le comptage de références peut également être implémenté afin que chaque référence à l’objet (pas à une interface individuelle) soit comptabilisée. Dans ce cas, chaque AddRef
délégué et Release
appelle une implémentation centrale sur l’objet et Release
libère l’objet entier lorsque son nombre de références atteint zéro.
Remarque
Lorsqu’un CComObject
objet dérivé est construit à l’aide de l’opérateur new
, le nombre de références est 0. Par conséquent, un appel doit AddRef
être effectué après la création de l’objet CComObject
dérivé.
Voir aussi
Introduction à COM
Gestion des durées de vie des objets via le comptage de références