C程序4G虚拟地址空间

C程序4G虚拟地址空间

1、从0X00000000到0X08048000是不可访问区,共128M

char* p = NULL;strcpy(p,"hello");程序会崩溃,因为NULL为0地址,是不可访问的

2、0X08048000到0X0804894是EFL头,和program头,0X0804894是程序的执行入口。

3、.text段存储代码,权限只读。

4、.data和.bss段存储数据,权限可读可写(程序运行时.bss将被加载到内存,所以4G虚拟内存里有.bss段)

bss段可以解释为best  save  space,节省的是磁盘上的空间。

5、.heap段为堆,堆分配的地址越来越大,向下扩展。

6、.stack段为栈,栈分配的地址越来越小,向上扩展。

7、从0XC0000000到0Xffffffff是内核空间,用户不能访问

int  a =10,程序在链接时已经确定了变量a的地址

程序打印出来的是逻辑地址。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值