#include <stdio.h>
const int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
Имеет следующий вывод:
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
5133 272 24 5429 1535 a.out
Принимая во внимание:
#include <stdio.h>
static int str[1000] = {0};
int main(void)
{
printf("arr is %d\n", str[0]);
return 0;
}
Имеет следующий вывод:
[-exercises/adam/stack2]:size a.out
text data bss dec hex filename
1080 4292 24 5396 1514 a.out
Когда массив неинициализирован - он снова переходит в текстовый сегмент для «const» и в BSS для «статического».
Переменная является глобальной и должна быть доступна из любого места в исполняемом файле, частью которого она является (из-за отсутствия «статики»), но учитывая ее переменную, я не знаю, почему она помещена в текстовый сегмент вместо сегмента данных. ?