内存管理

← 返回 MOC | ← 相关原理 | ← 主页


任务栈

  • 每个任务都要有自己的栈。
  • 栈太小会溢出,栈太大又会浪费宝贵 RAM。
  • 学 FreeRTOS 时,任务栈大小评估是很实际的问题。

heap_1heap_5

  • heap_1:只分配不释放,最简单。
  • heap_2:可分配可释放,但不合并相邻空闲块。
  • heap_3:直接包一层标准库 malloc/free
  • heap_4:支持合并空闲块,常用。
  • heap_5:支持多个不连续内存区域。

动态分配与静态分配

  • 动态分配方便,但要考虑碎片、峰值和失败路径。
  • 静态分配更可控,适合资源边界清晰的系统。
  • 删除任务后,相关内存怎么回收,也要搞清。

这一篇要盯住什么

  • FreeRTOS 的内存重点不是虚拟内存,而是任务栈、堆、碎片和失败处理。
  • 能静态分配的关键对象,很多时候值得优先静态化。