xTaskCreate(LED_Task, "LED_Task", 128, NULL, 6, NULL);
提醒:这里“字”是单位,比如:uint32_t
通过进一步追踪代码,你会发现在“创建任务”函数中调用了【pvPortMalloc】函数分配内存。
这是系统自定义的函数,并非标准的malloc函数。
看似是在“动态分配内存”,实际是在“瓜分”上面定义的全局数组(堆栈)。 具体如何“瓜分”的,可以参看“heap_4.c”源代码(通过我们使用“heap_4.c”内存分配方式,如果其他的可以参看对应的源码)。 3.删除任务
FreeRTOS删除任务,会调用“vPortFree()”函数释放对应的内存。
这里会牵涉到 TCB(任务控制块),就是任务相关的这一块数据。(这里不细说,后面有机会再说)。
看到这里,你能回答开篇这个问题了吗?
答案:FreeRTOS不是动态分配内存,只是模拟了动态分配的方式,实际的内存是静态分配的。
------------ END ------------
关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
点击“阅读原文”查看更多分享。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!