#include <stdio.h>
const int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
tiene la siguiente salida:Las variables globales inicializadas declaradas como "const" van al segmento de texto, mientras que las declaradas "Static" van al segmento de datos. ¿Por qué?
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
5133 272 24 5429 1535 a.out
Considerando lo siguiente:
#include <stdio.h>
static int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
Tiene el siguiente resultado:
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
1080 4292 24 5396 1514 a.out
Cuando no está inicializado la matriz - de nuevo va a texto segmento para "const" y para BSS para "estático".
La variable es global y debe ser accesible desde cualquier parte del ejecutable del que forma parte (porque no tiene "estática"), pero dada su variable no sé por qué se coloca en segmento de texto en lugar de datos ¿segmento?
+1: Buena pregunta. Es posible que desee extenderlo a 'static const'. – Arun