¿Por qué las constantes se almacenan en el segmento de texto en un mapa de memoria C?
Hola. Por favor, considere los fragmentos de código a continuación compilados con gcc en una máquina Linux (64 bits) con el mapa de memoria correspondiente
#include <stdio.h>
int global = 2;
int main(void)
{
int local = 0;
return 0;
}
text data bss dec hex filename
1092 500 16 1608 648 mem
Aquí ya que hay una variable global inicializada a 2. Se ha almacenado en el segmento de datos. Considere el caso de hacerlo constar como se muestra a continuación.
#include <stdio.h>
int const global = 2;
int main(void)
{
int local = 0;
return 0;
}
text data bss dec hex filename
1096 496 16 1608 648 mem
Aquí la variable global se mueve del segmento de datos al segmento de texto.
¿Por qué se mueve de los datos al segmento de texto?
Dado que el segmento de datos se divide en áreas de lectura y lectura-escritura, debería haberse almacenado en el área de lectura de los datos, ¿no?
¿Qué sucede con una variable global sin inicializar inicializada en medio del código?