C标准库中的malloc和FreeRTOS中pvPortmalloc的问题

2019-07-20 10:07发布

我在写程序的时候,在移植了FreeRTOS后利用malloc申请内存时返回的是NULL无法申请内存成功,但是堆栈的空间是足够的,我利用pvPortmalloc就能申请成功,请问这是什么原因造成的呢?在此先谢过了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
八度空间
2019-07-20 13:52
浣洗铅华 发表于 2018-1-8 11:33
系统的malloc怎么分配内存空间呢?我只是在FreeRTOSConfing.h里设置了内存堆栈大小,启动文件堆栈大小是 ...

1、需要调用_init_alloc()分配内存空间给malloc函数,设置内存块的起始地址和结束地址,这样才能调用malloc进行内存分配
2、如果你使用内存分配比较频繁而且分配的空间不大的情况下,建议你不要使用系统的malloc,这货造成内存碎片并没有碎片处理,对于有MMU的单片机比较适合,否则会出现意外的bug
3、推荐使用原子哥的那个或者OS自带的内存分配方法,FreeRTOS的head4就是比较常用的,RTT也有内存分配方法,等等

一周热门 更多>