FreeRTOS 内存管理

FreeRTOS 内存管理

FreeRTOS的内存管理API定义在heep_1.cheep_2.cheep_3.cheep_4.cheep_5.c中,这五个文件中的内存管理API有所不同。

  • heep_1.c只能分配内存而不能释放内存。
  • heep_2.c可以分配和释放内存但不能合并空闲内存块。
  • heep_3.c简单的封装了线程安全版的标准C语言malloc和free函数。
  • heep_4.c可以合并相邻的空闲内存块。
  • heep_5.c可以合并相邻的空闲内存块,且可以管理地址不连续的物理内存。

分配内存的API是pvPortMalloc,释放内存的API是vPortFree

#include <portable.h>
 
void* pvPortMalloc(size_t xWantedSize);
//分配指定大小的内存
 
void vPortFree(void *pv);
//释放内存,使用heep_1.c的话,这个函数不工作

如果使用heep_5.c则需要使用vPortDefineHeapRegions进行初始化。

#include <portable.h>
void vPortDefineHeapRegions(const HeapRegion_t * const pxHeapRegions);
作者: PlanC
2024-12-18 20:03:48+08:00