#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。
该变量是全局的,应该可以从它所属的可执行文件中的任何位置访问(因为没有“静态”),但是鉴于它是一个变量,我不知道为什么它被放置在文本段而不是数据段中?