#include <stdio.h>
const int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
ha la seguente uscita:Le variabili inizializzate globali dichiarate come "const" vanno al segmento di testo, mentre quelle dichiarate "Statiche" vanno al segmento dati. Perché?
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
5133 272 24 5429 1535 a.out
considerando quanto segue:
#include <stdio.h>
static int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
Ha il seguente output:
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
1080 4292 24 5396 1514 a.out
Quando l'array è inizializzato - va di nuovo al testo segmento per "const" e per BSS per "statico".
La variabile è globale e dovrebbe essere accessibile da qualsiasi posizione nell'eseguibile di cui fa parte (a causa di nessun "statico"), ma data la sua variabile non so perché è collocata nel segmento di testo anziché dati segmento?
+1: buona domanda. Potresti volerlo estendere a 'static const'. – Arun