在我的链接脚本的起始地址和大小如下:其中是存储在内存段中的全局变量和静态变量?
code start:90400000
code end: 90a00000
data start:90b00000, size 3MB
bss start: 91200000, size 1MB
但是当我声明一个全局变量,其地址为:910bead0
它应该驻留在.bss
部分,但它是某处其他,我甚至没有在链接器脚本中指定。 谁能告诉我发生了什么事?
在我的链接脚本的起始地址和大小如下:其中是存储在内存段中的全局变量和静态变量?
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
。
在链接期间生成映射文件。 –
注意:'0x910bead0 - 0x90b00000 == 0x5BEAD0 == 6023888'大约6MB。 –