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段)

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

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

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

C程序4G虚拟地址空间

相关文章: