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 :
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!