您好请考虑以下在 Linux 机器(64 位)上使用 gcc 编译的代码片段以及相应的内存映射
#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
这里因为有一个全局变量初始化为 2 。它被存储在数据段中考虑将其设为 const 的情况如下所示
#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
这里全局变量从数据段移动到文本段。
为什么它从数据移动到文本段?
既然数据段分为读区和读写区,那应该是存放在读区的数据吧?
在代码中间初始化的未初始化全局变量会发生什么?