#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 для «статического».
Переменная является глобальной и должна быть доступна из любого места исполняемого файла, частью которого она является (из-за отсутствия «статичности»), но учитывая ее переменную, я не знаю, почему она помещается в текстовый сегмент вместо сегмента данных