1. 程式人生 > >linux4G虛擬地址空間

linux4G虛擬地址空間

在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的全域性變數,靜態變數。