Référence circulaire

Un article de Wikipédia, l'encyclopédie libre.

En informatique, une référence circulaire est une suite de références dans laquelle le dernier objet référence le premier résultant en une boucle fermée. Le concept mathématique sous-jacent est un cycle dans la théorie des graphes.

Notons le fait que A référence B. Si , alors on a une référence circulaire. En effet, on a et donc par transitivité . Cette situation pose un problème car cela signifie que l'on ne peut pas avoir A sans disposer de A lui-même.

Exemples[modifier | modifier le code]

Par exemple, pour la résolution de dépendances logicielles : si par le jeu des dépendances un paquet a besoin de lui-même pour pouvoir être installé, alors il est impossible de l'installer à moins qu'il ne soit déjà installé.

Ce problème se retrouve également dans le bootstraping où un compilateur écrit dans le langage qu'il est en train de compiler, qu'il aura besoin de lui-même pour pouvoir être compilé.

Avec un ramasse-miettes qui fonctionne par comptage de références, un cycle dans les références entre objets n'est pas détecté, ce qui empêche de libérer la mémoire et de la rendre disponible pour le reste de l'exécution du programme.

C'est aussi la cause de récursions infinies lorsqu'avec les appels de méthodes, on appelle une méthode qui en appelle une autre, qui en appelle une autre jusqu'à ce que l'on appelle à nouveau la première méthode, et le cycle recommence jusqu'à un dépassement de pile qui pourrait être utilisé par un attaquant pour prendre le contrôle de l'ordinateur.

Un autre exemple peut être rencontré dans le calcul des frais financiers futurs : ces derniers dépendent du montant de la dette qui dépend elle-même des frais financiers impactant le solde de la trésorerie de la période[1].

Articles connexes[modifier | modifier le code]

Sur les autres projets Wikimedia :

Notes et références[modifier | modifier le code]