不同的heap
heap1使用简单的数组定义堆,速度快,但是没有办法回收;
heap2可以回收,但是会产生碎片,因此只适合分配内存大小一样的场景
heap3使用malloc和free,慢
heap4解决了heap1、heap2的缺点,一般使用heap4
heap相关的函数
1、分配与回收
void * pvPortMalloc( size_t xWantedSize ); // 分配内存,如果分配内存不成功,则返回值为NULL。
void vPortFree( void * pv ); // 释放内存
2、获取当前剩余的堆内存
size_t xPortGetFreeHeapSize( void );
例如,程序运行后,当所有内核对象都分配好后,执行此函数返回2000,说明还剩余2000个单位,那么configTOTAL_HEAP_SIZE就可减小2000,来优化。
注意:在heap_3中无法使用。