其中,存储在内存段中的全局变量和静态变量

where is the global and static variables stored in memory segment?

本文关键字:全局变量 静态 变量 段中 存储 内存 其中      更新时间:2023-10-16

在我的链接器脚本中,起始地址和大小如下所示:

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

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

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

int x = 0;

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