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的全局变量,静态变量。

猜你喜欢

转载自blog.csdn.net/free377096858/article/details/84666221
今日推荐