FreeRTOS是动态分配内存吗?
💡
原文中文,约1600字,阅读约需4分钟。
📝
内容提要
FreeRTOS中创建和删除任务时,使用的是静态分配的内存,而不是动态分配的内存。内存分配可以分为静态分配和动态分配两种方式。FreeRTOS的内存是在FreeRTOSConfig.h文件中分配的一个全局数组,创建任务、信号量、队列等都会调用这个堆栈。删除任务时会调用vPortFree()函数释放对应的内存。
🎯
关键要点
- FreeRTOS中创建和删除任务时使用的是静态分配的内存,而不是动态分配的内存。
- 内存分配分为静态分配和动态分配两种方式。
- 静态分配内存是在编译时就已分配空间,启动时分配栈内存、定义静态变量和全局变量等都是静态分配的例子。
- 动态分配内存是在运行时根据需要分配,常见的如局部变量和malloc()函数,但不建议使用malloc()。
- FreeRTOS的内存是在FreeRTOSConfig.h文件中分配的全局数组,用户根据情况分配内存大小。
- 创建任务时会调用pvPortMalloc函数分配内存,实际上是在瓜分全局数组(堆栈)。
- 删除任务时会调用vPortFree()函数释放对应的内存,涉及到任务控制块(TCB)。
- FreeRTOS并不是动态分配内存,而是模拟了动态分配的方式,实际内存是静态分配的。
🏷️
标签
➡️