Lo que sé es que las variables globales y estáticas se almacenan en el .datasegmento y los datos no inicializados están en el .bsssegmento. Lo que no entiendo es por qué tenemos un segmento dedicado para las variables no inicializadas. Si una variable no inicializada tiene un valor asignado en tiempo de ejecución, ¿existe la variable .bsssolo en el segmento?
En el siguiente programa, aestá en el .datasegmento y bestá en el .bsssegmento; ¿Es eso correcto? Por favor corríjame si mi comprensión es incorrecta.
#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 ()
{
;
}
Además, considere el siguiente programa,
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}