Partager via


Décompte de références

COM n'essaie pas automatiquement de supprimer un objet de la mémoire lorsqu'il pense que l'objet n'est plus utilisé. À la place, le programmeur d'objet doit supprimer l'objet non utilisé. Le programmeur détermine si un objet peut être supprimé en fonction d'un nombre de références.

COM utilise les méthodes d' IUnknown , AddRef et Version, pour gérer le décompte de références d'interfaces sur un objet. Les règles générales pour appeler ces méthodes sont :

  • Chaque fois qu'un client reçoit un pointeur d'interface, AddRef doit être invité l'interface.

  • Chaque fois que le client a terminé d'utiliser le pointeur d'interface, il doit appeler Release.

Dans une implémentation simple, les index de chaque appel d' AddRef et chaque appel de Release décrémente une variable compteur à l'intérieur de l'objet. Lorsque retourne à zéro de nombre, l'interface n'a plus aucun utilisateur et est libre pour le supprimer de la mémoire.

Le décompte de références peut également être implémenté afin que chaque référence à l'objet (pas à une interface individuelle) soit numérotée. Dans ce cas, les délégués chaque AddRef et appel de Release à une implémentation centrale sur l'objet, et Release libère l'objet entier lorsque ses atteint zéro de décompte de références.

Notes

Lorsque CComObject- l'objet dérivé est construit à l'aide de l'opérateur nouveau , le décompte de références est 0.Par conséquent, un appel à AddRef doit être effectuée après avoir créé avec succès CComObjectobjet dérivé.

Voir aussi

Référence

Introduction à COM

Managing Object Lifetimes through Reference Counting