当前位置:   article > 正文

x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局_32位可执行程序的用户和内核的段地址

32位可执行程序的用户和内核的段地址

虚拟地址空间
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. 栈内存是由系统分配,系统释放的;以函数为单位进行栈内存分配,函数栈帧,局部变量,形参变量等都存放在栈内存上。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/770004
推荐阅读
相关标签
  

闽ICP备14008679号