Les variables statiques jouent un rôle crucial dans la programmation en C et C, permettant aux données de persister tout au long de la durée de vie d'un programme. Mais où exactement ces variables sont-elles stockées dans un fichier exécutable pour garantir qu'aucune collision de noms ne se produise ?
Considérez les extraits de code suivants :
// foo.c static int foo = 1; void fooTest() { static int bar = 2; foo++; bar++; } // bar.c static int foo = 10; void barTest() { static int bar = 20; foo++; bar++; }
Lors de la compilation et de la liaison de ces fichiers avec une fonction principale qui appelle fooTest() et barTest() à plusieurs reprises, les instructions printf s'incrémentent indépendamment. Cela indique que les variables foo et bar sont locales à leurs unités de traduction respectives.
L'allocation des variables statiques dans un fichier exécutable dépend de leur initialisation.
L'emplacement de stockage spécifique des variables statiques peut varier en fonction de la chaîne d'outils utilisée. Pour cette discussion, supposons que nous utilisons la GNU Compiler Collection (GCC).
Les variables statiques en C et C sont stockées dans le segment .BSS ou .DATA d'un exécutable. fichier, en fonction de leur initialisation. Cela garantit que chaque variable statique dispose d'un emplacement mémoire unique et évite les collisions de noms.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!