我是靠谱客的博主 踏实诺言,最近开发中收集的这篇文章主要介绍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 体系,32 位 linux 内核支持的进程的虚拟地址空间布局所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部