Maison > développement back-end > C++ > Quel est le processus d'initialisation des variables statiques et globales en C et C ?

Quel est le processus d'initialisation des variables statiques et globales en C et C ?

DDD
Libérer: 2024-11-05 20:22:02
original
1072 Les gens l'ont consulté

What is the Initialization Process for Static and Global Variables in C and C  ?

Quand les variables statiques et globales sont-elles initialisées en C et C ?

En C et C, les variables statiques et globales ont des procédures d'initialisation distinctes. Contrairement à C , où les objets statiques et globaux subissent une construction avant la fonction principale, C ne dispose pas d'une telle initialisation.

Minutage d'initialisation en C

Dans le code C, les variables globales comme global_int1 et global_int2, qui n'ont pas d'initialiseur explicite, sont initialisés à 0 par le système. Cependant, les variables statiques static_int1 et static_int2 ne sont pas initialisées. Leurs valeurs restent indéterminées jusqu'à ce qu'elles soient explicitement définies dans le programme.

Valeurs d'initialisation en C

Les variables avec des initialiseurs explicites, tels que global_int1 avec la valeur 5, se voient attribuer leurs valeurs par le compilateur dans le cadre de la traduction du code. Cette valeur est stockée dans le segment de données du fichier exécutable.

Lors de l'exécution du programme, le système charge le fichier exécutable en mémoire, y compris le segment de données. Les variables globales se voient ensuite allouer de la mémoire et initialisées avec les valeurs stockées dans le segment de données.

Phases d'initialisation en C

C suit un processus d'initialisation en trois phases pour les variables statiques. objets avec portée d'espace de noms :

  1. Initialisation zéro : Tous les objets statiques sont initialement définis sur 0.
  2. Initialisation statique : Objets avec portée d'espace de noms l'initialisation (par exemple, static_int1) se voient attribuer leurs valeurs.
  3. Initialisation dynamique : Les objets avec initialisation dynamique (par exemple, static_int2 ou global_int2 s'ils ne sont pas initialisés en C ) sont initialisés au moment de l'exécution via l'exécution de code.

Gestion de la mémoire en C

Les valeurs d'initialisation statiques en C sont stockées dans le segment de données du fichier exécutable. Semblables à C, ces valeurs sont chargées en mémoire lors de l'exécution du programme et affectées aux variables respectives.

Les variables sans initialiseur ou avec initialisation dynamique se voient attribuer de la mémoire dans le segment bss. Le système initialise ces variables à 0 avant l'exécution du programme.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal