Ce que je sais, c'est que globales et les variables statiques sont stockées dans l' .data
segment, et des données non initialisées sont dans l' .bss
segment. Ce que je ne comprends pas, c'est pourquoi nous avons segment dédié pour les variables non initialisées? Si une variable non initialisée a une valeur attribuée au moment de l'exécution, la variable existe pas encore dans l' .bss
segment?
Dans le programme suivant, a
est le .data
segment, et b
est le .bss
segment; est-ce exact? Veuillez me corriger si ma compréhension est erronée.
#include <stdio.h>
#include <stdlib.h>
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[20]; /* Uninitialized, so in the .bss and will not occupy space for 20 * sizeof (int) */
int main ()
{
;
}
Aussi, envisager la suite du programme,
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}