Por que as constantes são armazenadas no segmento de texto em um mapa de memória C?
Olá Por favor, considere os trechos de código abaixo compilados com o gcc em uma máquina Linux (64 bits) com o mapa de memória correspondente
#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
Aqui, uma vez que existe uma variável global inicializada para 2. Tem sido armazenado no segmento de dados Considere o caso de torná-lo const como mostrado abaixo
#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
Aqui, a variável global é movida do segmento de dados para o segmento de texto.
Por que é movido dos dados para o segmento de texto?
Como o segmento de dados é dividido em áreas de leitura e leitura e gravação, ele deveria ter sido armazenado na área de leitura dos dados, certo?
O que acontece com uma variável global não inicializada inicializada no meio do código?