在我的鏈接腳本的起始地址和大小如下:其中是存儲在內存段中的全局變量和靜態變量?
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。 –