存储在内存段中的全局变量和静态变量在哪里?

时间:2013-10-23 11:07:21

标签: c++ operating-system

在我的链接描述文件中,起始地址和大小如下:

code start:90400000
code end:  90a00000
data start:90b00000, size 3MB
bss start: 91200000, size 1MB

但是当我声明一个全局变量时,它的地址是:910bead0 它应该驻留在.bss部分,但它在其他地方,我甚至没有在链接描述文件中指定。 谁能告诉我发生了什么事?

1 个答案:

答案 0 :(得分:3)

您没有说明您正在使用的系统等,但传统上:初始化的全局数据都在data;未初始化的全局数据进入bss(初始化为0)。当你写下这样的东西时:

int x = 0;

系统不同:有些人认识到初始化相当于零初始化(即当你没有指定初始化时会发生什么),并将它放在bss中;其他人只会看到有一个初始化的事实,并把它放在data