概述
x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局
1.局部变量存在哪里(栈上)?
x86体系, 32位linux内核给每一-个进程都分配4G大小的虚拟地址空间,有3G的用户态和1G的内核态,用户态主要存放我们应用程序定义的指令或者数据,局部变量存在于栈上,随着函数的运行,栈上开辟了内存,函数运行完成,栈上内存自动被系统回收!
- 局部变量都在栈上存储
- 全局变量或static全局变量都在.data或者.bss段存储
- malloc或者new的内存都在堆上开辟
- 指令都存放在.text段上
- 常量字符串,如"hello world’ '都在rodata段存储
2.堆和栈的区别
- 首先给出 x86 32 位 linux 系统进程地址空间上堆和栈的描述,先是.text,.data,.bss,堆,栈,命令行参数,环境变量等。。。来说说在虚拟地址空间上,堆和栈的划分是完全两块不同的内存,不能混为一谈的。
- 栈内存是由系统分配,系统释放的;以函数为单位进行栈内存分配,函数栈帧,局部变量,形参变量等都存放在栈内存上。
最后
以上就是踏实诺言为你收集整理的x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局的全部内容,希望文章能够帮你解决x86 体系,32 位 linux 内核支持的进程的虚拟地址空间布局所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复