任务共享动态内存问题

2019-07-20 22:33发布

目前使用freertos做操作系统,想在任务之间传递消息,由于系统没有邮箱之类的,所以只能采用队列传递消息指针的方式,这样可以节省内存,但是担心申请的内存,会在异常情况下不能释放造成泄漏,请问谁知道任务间共享内存比较安全的方式,或者指点下ucos消息这块的消息申请和释放模式
还有问下原子你的动态申请内存可靠么,会不会时间长了产生碎片

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
FreeRTOS
2019-07-21 06:44
xsx127 发表于 2016-4-30 16:21
不使用全局变量,不利于模块化
而且我发送的消息不是一条啊,根据程序运行状况发送数目和内容都不同,现 ...

既然任务间只是传递一个指针,那么用一个长度为4的队列不就好了,至于队列深度是多少也不是大问题了,毕竟队列长度只有4,就算深度是100,那么也就耗费400字节的队列单元。

freertos的内存管理方案我只研究过heap_2和heap_4,指点就不敢了,至于内存管理的使用都大同小异,需要用到时申请内存,使用完后释放内存。heap_2采用的是最适合空闲块的机制,但不具备碎片回收功能,实际项目测试过稳定性一般,尤其是多个任务申请的内存大小不一样时尤其容易出现碎片,这是heap_2的一个致命性缺陷,《freertos中文使用教程》里面有对heap_2的安全使用作详细说明,有兴趣可以看看。至于heap_4,具有内存碎片回收功能,但不具备heap_2的最适合内存块分配功能,目前公司的项目都采用这套方案,稳定性十分强,建议使用这套方案。至于heap_5听说跟heap_4是一样的,只不过是内外部定义内存空间的区别罢了

一周热门 更多>