buddy内存分配算法

普通内存分配方式存在外部碎片问题,Buddy内存分配算法通过类聚方法解决此问题。Buddy算法基于二分法,确保小内存集中,降低碎片产生。通过内存池和特定的数据结构管理,实现高效内存分配和合并。
摘要由CSDN通过智能技术生成

1 普通内存分配方式的缺点以及解决方法:

1.1 普通的动态内存分配方式(如c语言运行库的内存分配malloc、free):

分配时,是在堆的空闲链表上,查找到第一块空闲的并且足够大的内存,然后对这块内存进行分割,分割一块足够的内存给调用者,剩余部分作为一个新的节点链接到空闲链表里面去;释放时,查找与被释放内存区域连续的节点,如有找到,则合并,如无,则作为一个新的节点放回空闲链表里面去。

1.2 普通的动态内存分配缺点:

多次分配、释放内存操作后,可能会产生大量的外部碎片(下面红色表示已分配的内存块,绿色表示空闲的内存块)。

        例如,经过多次分配后,内存块分布如下所示:

|-------------------------------------------------------------------|------|-------------------------------------------------------------------|------|-------------------------------------------------------------------|

然后有部分内存被释放了,内存块如下所示:

|-------------------------------------------------------------------|------|-------------------------------------------------------------------|------|-------------------------------------------------------------------|

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值