博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速的内存分配器
阅读量:4168 次
发布时间:2019-05-26

本文共 7248 字,大约阅读时间需要 24 分钟。

为了减少内存碎片,实现了一个简单的快速内存分配器。

优点:
无内存碎片
O(1)的分配算法。
O(1)的回收算法。
缺点:
底层仍旧使用了malloc。进一步考虑采用mmap
内存大小不可动态扩展。考虑是否支持动态扩展
分配的每快内存都是固定大小。考虑是否支持不同大小的块。
 
基本算法:
采用链表管理可用内存与已使用内存。
分配内存时候,从freelist的头取得一个可用块。此块被放到usedlist中。
回收的时候,从usedlist中将回收的块放回freelist。
这两个操作都可以在O(1)内实现。
 
具体代码如下:

  

 

转载地址:http://itgxi.baihongyu.com/

你可能感兴趣的文章
嵌入式100题(045):为什么建立连接是三次握手,关闭连接确是四次挥手呢?...
查看>>
嵌入式100题(028):static的用法(定义和用途)
查看>>
嵌入式100题(027):char和int之间的转换
查看>>
嵌入式100题(029):const常量和#define的区别(编译阶段、安全性、内存占用等)...
查看>>
嵌入式100题(030):volatile作用和用法
查看>>
嵌入式100题(033):TCP、UDP的优缺点
查看>>
嵌入式100题(035):TCP为什么是可靠连接
查看>>
嵌入式100题(034):TCP UDP适用场景
查看>>
嵌入式100题(70):一个程序从开始运行到结束的完整过程(四个过程)
查看>>
嵌入式100题(71):什么是堆,栈,内存泄漏和内存溢出?
查看>>
嵌入式100题(73):死锁的原因、条件 创建一个死锁,以及如何预防
查看>>
嵌入式100题(60):系统调用的作用
查看>>
C语言基本概念归纳
查看>>
初识单片机
查看>>
在单片机上点亮LED
查看>>
初学定时器
查看>>
数码管
查看>>
单片机数码管消隐及中断
查看>>
C#串口调试助手代码
查看>>
学习DS1820随记
查看>>