【发布时间】:2012-10-11 04:48:46
【问题描述】:
您好,请考虑下面的代码 sn-ps 在 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
这里将全局变量从数据段移动到文本段。
为什么要从数据中移到文本段?
既然数据段是分为读区和读写区的,应该已经存放在读区的数据了吧?
在代码中间初始化的未初始化全局变量会发生什么?
【问题讨论】:
标签: c linux memory memory-management