Partager via


Nombre de références

Remarque

La bibliothèque de modèles actifs (ATL) continue d’être prise en charge. Toutefois, nous n’ajoutons plus de fonctionnalités ni ne mettons à jour la documentation.

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 appel de AddRef et Release délègue à une implémentation centrale sur l’objet, et Release libère tout l’objet lorsque son nombre de références atteint zéro.

Remarque

Lorsqu’un CComObjectobjet dérivé est construit à l’aide de l’opérateur new , le nombre de références est 0. Par conséquent, un appel à AddRef doit être effectué après la création réussie de l’objet dérivé CComObject.

Voir aussi

Introduction à COM
Gestion des durées de vie des objets via le comptage de références