FreeRTOS内存分配

#define configTOTAL_HEAP_SIZE					((size_t)(20*1024))
ucHeap[configTOTAL_HEAP_SIZE]

xPortGetFreeHeapSize()//内存堆栈剩余的大小

heap_1.c

适用于task不删除,没有free函数

heap_2.c

有碎片问题,任务分配的堆栈大小一样,动态内存分配

heap_3.c

malloc,free封装,实现线程保护 ucHeap没有使用

heap_4.c

将碎片合并为可用内存

xPortGetMinimumEverFreeHeapSize()

heap_5.c

跨越不连续的内存
结构体数组

vPortDefineHeapRegions()//定义多个heap region
typedef struct HeapRegion
{
	uint8_t *pucStartAddress;
	size_t xSizeInBytes;
} HeapRegion_t;

数组的最后一个结构体,是NULL

内存泄漏

在一次内存释放之前,绝不能再调用malloc分配

你可能感兴趣的:(rtos)