我是靠谱客的博主 踏实诺言,这篇文章主要介绍x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局,现在分享给大家,希望可以做个参考。

虚拟地址空间
x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局

1.局部变量存在哪里(栈上)?
x86体系, 32位linux内核给每一-个进程都分配4G大小的虚拟地址空间,有3G的用户态和1G的内核态,用户态主要存放我们应用程序定义的指令或者数据,局部变量存在于栈上,随着函数的运行,栈上开辟了内存,函数运行完成,栈上内存自动被系统回收!

  1. 局部变量都在栈上存储
  2. 全局变量或static全局变量都在.data或者.bss段存储
  3. malloc或者new的内存都在堆上开辟
  4. 指令都存放在.text段上
  5. 常量字符串,如"hello world’ '都在rodata段存储

2.堆和栈的区别

  1. 首先给出 x86 32 位 linux 系统进程地址空间上堆和栈的描述,先是.text,.data,.bss,堆,栈,命令行参数,环境变量等。。。来说说在虚拟地址空间上,堆和栈的划分是完全两块不同的内存,不能混为一谈的。
  2. 栈内存是由系统分配,系统释放的;以函数为单位进行栈内存分配,函数栈帧,局部变量,形参变量等都存放在栈内存上。

最后

以上就是踏实诺言最近收集整理的关于x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局的全部内容,更多相关x86内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(104)

评论列表共有 0 条评论

立即
投稿
返回
顶部