轻量级操作系统FreeRTOS的内存管理机制(二)中讲到,heap2.c的内存管理机制会导致内存碎片的问题,系统运行久后会出现无法分配大块内存的情况,heap4.c中的管理机制提供了解决方法,它是在heap2.c的基础上添加了地址相邻空闲块间合并的功能,而heap5.c是对heap4.c的进一步扩展,它能够支持多块不连续分布的RAM空间作为堆使用,本篇将对heap4.c、heap5.c中的管理机制进行分析。
一、heap4.c
1.重要结构体
2.重要变量
xBlockAllocatedBit在堆初始化时被赋值为:
即最高位为1,在分配内存的时候xBlockSize将和置位变量xBlockAllocatedBit相与,使得xBlockSize最高位置位,表示改内存块属于应用程序;在回收内存时,通过xBlockSize