虚拟地址空间与堆区

虚拟地址空间:为了减少内存移动,提高利用率,隔离进程保护安全,加入了虚拟的地址,把内存分割成很多页映射存储需要经过转换才能访问实际物理内存。
栈区每个线程独享,全局变量区、堆区是每个进程独享的内存。
因为堆区一开始不知道要使用多少内存,需要动态开辟,堆区一开始向系统申请一块大内存,然后零售给程序,free只是归还给虚拟空间,并未真正释放,如果有malloc函数扫描到之前的释放的块那可直接使用,而不用向系统频繁申请空间。等到调用malloc函数时查找块从头到尾遍历完了实在没有空闲块就会移动堆区有效指针break以实现扩容,是内核调用,花费时间。如果用到了新的页面一个页面4k,就要分配物理页。如果指针在同一个页面里面移动就不用。堆区是隐式链表保存着内存块区域大小以及使用状态。

相关推荐

  1. 虚拟地址空间

    2024-02-22 10:24:04       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-22 10:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-22 10:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-22 10:24:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-22 10:24:04       20 阅读

热门阅读

  1. hive rlike

    2024-02-22 10:24:04       26 阅读
  2. Hive 最全面试题及答案(基础篇)

    2024-02-22 10:24:04       26 阅读
  3. 网络安全专业术语中英对照指南

    2024-02-22 10:24:04       24 阅读
  4. R语言【sp】——定义控件光栅

    2024-02-22 10:24:04       21 阅读