动态内存管理的简单实现(适用于裸机环境即没有c标准库的环境)

在linux环境下模拟没有c标准库,创建自己的malloc和free函数,达到动态管理内存的目的。

实现过程:

阶段1

              使用数组实现固定大小的动态内存分配和回收(使用标记位显示空闲或使用)。

阶段2

在第一步基础上,实现可变的动态内存分配和回收,增加一个位域记录内存块的大小。

阶段3

              使用两条链表实现可变长度的内存分配和回收,可任意申请和分配。

阶段4

              hash表对空闲块链表进行优化以提高分配速度。

系统流程图如下:

动态内存管理的简单实现(适用于裸机环境即没有c标准库的环境)_第1张图片

阶段1部分代码:

动态内存管理的简单实现(适用于裸机环境即没有c标准库的环境)_第2张图片

 

 动态内存管理的简单实现(适用于裸机环境即没有c标准库的环境)_第3张图片

 

 

动态内存管理的简单实现(适用于裸机环境即没有c标准库的环境)_第4张图片

 

 

阶段四优化后可实现:

分配的速度:用hash表进行优化后,分配速度为o(1)

       回收速度:遍历链表实现回收,回收速度为o(n)

       内存开销:hash表的内存开销,内存管理节点的内存开销。

       碎片问题:根据碎片的位置进行合并,减少碎片。

 

你可能感兴趣的:(动态内存管理的简单实现(适用于裸机环境即没有c标准库的环境))