单片机上Cjson使用malloc,结果掉坑里了。。。。

2020-01-01 17:39发布

使用了cJson,需要使用malloc,free来动态申请内存是否内存,堆配了2k。
平时使用一直未发现问题。最近进行压力测试,压力测试后,内存就申请不出来,json解析失败。

malloc的实现是c的标准库,一直非常相信标准库,现在回想起来,单片机用malloc真的容易出问题。  不知道大家的使用怎么样?有正常无故障的使用的吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
acmilannast
1楼-- · 2020-01-03 23:54
要内存回收。。。 不然碎片原来越多,后面就会一直失败。。。
dr2001
2楼-- · 2020-01-04 05:50
315936392 发表于 2017-1-15 09:35
大概几个小时后出现问题

内存碎片是不可避免的,只能是找机会重新初始化整个分配器(例如Free所有的Block);或者做二次引用,做一个支持数据移动的简单GC。
sky1234567
3楼-- · 2020-01-04 07:54
acmilannast 发表于 2017-1-16 14:36
要内存回收。。。 不然碎片原来越多,后面就会一直失败。。。

内存回收在没有mmu的系统比较难做
除了自己隔离一层 只用指针
avr_sz
4楼-- · 2020-01-04 13:51
嗯,单片机还是少用malloc,或者把内存划多一些

一周热门 更多>