Maison > développement back-end > C++ > Où sont stockées les variables statiques dans les exécutables C et C ?

Où sont stockées les variables statiques dans les exécutables C et C ?

Barbara Streisand
Libérer: 2024-12-30 12:07:12
original
198 Les gens l'ont consulté

Where Are Static Variables Stored in C and C   Executables?

Exploration du stockage des variables statiques en C et C

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++;
}
Copier après la connexion

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.

Allocation de stockage des variables statiques

L'allocation des variables statiques dans un fichier exécutable dépend de leur initialisation.

  • Zéro-initialisé : Les données statiques initialisées à zéro sont placées dans le Segment .BSS (Bloc démarré par symbole). Ce segment est rempli de zéros lors de l'exécution du programme.
  • Non initialisé à zéro : Les données statiques initialisées avec des valeurs non nulles sont placées dans le segment .DATA. Ce segment contient des données initialisées et est chargé en mémoire au démarrage du programme.

Dépendance de la chaîne d'outils

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).

Conclusion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal