使用尺寸命令當我檢查以下的C程序的存儲器佈局,在Linux中使用命令size program_name
檢查交流程序的存儲器佈局,我得到數據= 552,BSS = 8奇怪的結果而在linux
#include <stdio.h>
int main()
{
return 0;
}
現在,添加一個未初始化的變量後,我仍然得到相同的結果,data = 552,bss = 8. 我在這裏期待bss = 12。
#include <stdio.h>
int a;
int main()
{
return 0;
}
如果我添加初始化值的變量,我得到了我所料,數據= 556,BSS = 12
#include <stdio.h>
int a;
int b = 10;
int main()
{
return 0;
}
但是,如果聲明指針並使其指向初始化變量,我得到data = 568,bss = 8,,我不明白爲什麼。 (對我來說,這似乎是兩個指針和未初始化的變量已被添加到列表初始化!)
#include <stdio.h>
int a;
int b = 10;
int * c = &b;
int main()
{
return 0;
}
可有人請澄清這裏發生了什麼?
也許在第一種情況下,'期待bss = 12',編譯器會優化_unused_和_unreferenced_變量'a'。 –
但是第二種情況也會發生同樣的優化?或者它不會? –
@Eregrith那裏發生了什麼? –