Pierre tombale (programmation) - Tombstone (programming)

Les pierres tombales sont un mécanisme permettant de détecter les pointeurs pendants et d'atténuer les problèmes qu'ils peuvent causer dans les programmes informatiques. Les pointeurs pendants peuvent apparaître dans certains langages de programmation informatique , par exemple C , C++ et les langages d'assemblage .

Une pierre tombale est une structure qui sert d'intermédiaire entre un pointeur et sa cible, souvent des données dynamiques de tas en mémoire . Le pointeur - parfois appelé poignée - ne pointe que sur les pierres tombales et jamais sur sa cible réelle. Lorsque les données sont désallouées, le tombstone est défini sur null (ou, plus généralement, sur une valeur illégale pour un pointeur dans l'environnement d'exécution donné), indiquant que la variable n'existe plus. Ce mécanisme empêche l'utilisation de pointeurs invalides, qui accéderaient autrement à la zone mémoire qui appartenait autrefois à la variable désormais désallouée, bien qu'elle puisse déjà contenir d'autres données, entraînant à son tour la corruption des données en mémoire. Selon le système d'exploitation , le CPU peut détecter automatiquement un tel accès invalide (par exemple pour la valeur nulle : une erreur de déréférencement de pointeur nul ). Cela prend en charge l'analyse de la raison réelle, une erreur de programmation, le débogage et peut également être utilisé pour abandonner le programme en production, afin de l'empêcher de continuer avec des structures de données invalides.

En termes plus généraux, une pierre tombale peut être comprise comme un marqueur pour « ces données ne sont plus là ». Par exemple, dans les systèmes de fichiers, il peut être efficace lors de la suppression de fichiers de les marquer comme "morts" au lieu de récupérer immédiatement tous leurs blocs de données.

Les inconvénients de l'utilisation des pierres tombales incluent une surcharge de calcul et une consommation de mémoire supplémentaire : un traitement supplémentaire est nécessaire pour suivre le chemin du pointeur aux données via la pierre tombale, et une mémoire supplémentaire est nécessaire pour conserver les pierres tombales pour chaque pointeur tout au long du programme. Un autre problème est que tout le code qui doit fonctionner avec les pointeurs en question doit être implémenté pour utiliser le mécanisme de désactivation.

Aucun langage de programmation populaire n'utilise actuellement de pierres tombales. Cependant, la prise en charge intégrée par le langage de programmation ou le compilateur n'est pas nécessaire pour les utiliser.

Voir également

Les références