内存虚拟地址空间的划分空间

   当我们编码的时候我们的源程序一般都放在硬盘上,然后当我们使用这个程序时电脑就会在内存上运行这个程序,然而电脑内存资源是十分紧缺的,一般电脑内存都是4g,8g,2g。。所以当我们运行程序时并不是直接在内存上运行,而是在内存产生的虚拟地址空间上先进行,该虚拟空间一般也是4g,8g....。

   这就涉及到了虚拟空间的内存划分了.

以4g为例:


首先在虚拟空间的高地址存放内核,内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核的分类可分为单内核和双内核以及微内核。因为内核十分重要所以分配内存1g专门存放

然后剩下的3g内存就是用来存放用户自己的相关数据了:


在它下方并且紧挨着内核存放区域的就是栈空间:


数据类型; 用来存放局部变量,函数形参和自动变量(近期的版本已经很少使用自动变量这个概念了);

栈空间的特点; 存放数据时遵循先进后出的原则,(即先存放进栈空间的数据在取出时在后面取出,这些都是由系统管理的);


再下方就是堆空间:

类型:主要是给malloc,calloc,ralloc 分配空间

堆空间的特点:遵循先进先出的原则,可以由用户自己进行管理;


再下方是全局数据区(也叫数据区)

这一区域主要有三个部分组成:

1.bss : 存放未初始化的全局变量;

2.ordata:存放常量;

3.静态数据区:存放初始化的全局变量以及static修饰的变量;


最下方存放的则是代码段:

存放的当然就是代码了。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值