linux4G虛擬地址空間
阿新 • • 發佈:2018-12-31
在linux下編寫程式,不知你是否遇到過 “Segmentation fault” ,出現這種情況大多是因為訪問到了未經允許的地址。
例如:
linux作業系統將程序的虛擬地址空間做了如圖所示的分配:
思考:
#include<stdio.h> int gdata1 = 10; //.data int gdata2 = 0; //.bss int gdata3; //.bss static int gdata4 = 20; //.data static int gdata5 = 0; //.bss static int gdata6; //.bss int main() { int data1 = 30; //.text //只有普通區域性變數是指令 int data2 = 0; //.text int data3; //.text static int data4 = 40; //.data static int data5 = 0; //.bss static int data6; //.bss return 0; }
總結:
.text段是存放指令的;
.data段存放已初始化資料段,全域性變數,靜態變數。
.bss段存放未初始化以及初始化為0的全域性變數,靜態變數。