单片机上内存管理(重定义malloc free)的实现

转载自:单片机上内存管理(重定义malloc free)的实现

https://blog.csdn.net/qq_21475601/article/details/77579462?locationNum=7&fps=1

https://files.cnblogs.com/files/CodeWorkerLiMing/alloc.7z

在单片机上经常会需要用到像标准c库中的内存分配,可是单片机并没有内存管理机制,如果直接调用库函数(malloc,free...),会导致内存碎片越用越多,很容易使系统崩溃掉,这里分享一个自己写的适用于单片机的内存分配方法,具备轻量级的内存管理能力,有效减少内存碎片,提高单片机系统工作稳定性。

   如下图,heap_start开始的地方,是我们存放用户数据的地方,在heap_end之前都是大小固定的一个个内存管理块,内存管理块用于记录每次用户申请内存的地址、大小、释放情况。在malloc时,会优先选择和用户申请空间最相当的内存块,以减少内存碎片产生。在free的内存块时,如果遇到相邻内存块均为空闲块时,便会将几块相邻的内存块合并成一块,以减少内存碎片。

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/13875107.html