数据结构与算法——第8章-动态内存管理-内存紧缩(8.5)
一 概述
1 | 1.存储区 |
二 存储区
2.1 说明
1 | 前边介绍的有关动态内存管理的方法,无论是边界标识法还是伙伴系统, |
2.2 图示
一、存储区状态
1 | 这些地址连续的未被占用的存储区在编译程序中称为堆。 |
二、更新后的存储区状态
1 | 假设存储区的初始状态如图 1 所示,若采用本节介绍的方法管理这块存储区, |
三 分配内存空间
3.1 说明
1 | 在分配内存空间时,每次都从可利用空间中选择最低(或者最高)的地址进行分配。 |
3.2 图示
1 | 例如,某一时间段有四个用户(A、B、C、D)分别申请 12 个单位、6 个单位、10 个单位和 8 个单位的存储空间, |
四 回收算法
4.1 存储紧缩
1 | 由于系统中的可利用空间始终都是一个连续的存储空间, |
4.2 实现过程
1 | 具体的实现过程是: |
五 总结
1 | 存储紧缩较之无用单元收集更为复杂,是一个系统的操作,如果不是非不得已不建议使用。 |
六 参考
- C语言中文网—内存紧缩(内存碎片化处理)