2894|2

16

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP432 malloc分配不了内存 [复制链接]

项目大概是用MSP432通过UA2串口输出数据,想输出几M的图片,我用的DMA串口发送。我看现在一般是一次最大1024字节,所以想的分多包发送。先想试一试,一次发10K,发个10次,看能不能发出去。数据的形式用的CJSON,问题就出现在CJSON里面的malloc上。发的时候,开始第一包和第二包都没有问题,但是第三包就发不出去了,我一查,CJSON里面不是有malloc申请内存吗,返回是0。然后接着查的RAM,堆根本就没满,比如下面这个动态堆从0x20001810开始的,我第一个包和第二包动态申请内存之后返回的值就在0x20001880左右。内存申请失败主要有RAM不够和内存碎片原因,第一个RAM不够,我这才是堆的开头,肯定不存在堆满了的情况;那有可能就是内存碎片了,但是我看我后面还有大片大片的空间没有使用,这难道也是内存碎片了吗?不是太懂,希望有朋友能出来看看~谢谢~
PS:第一个图是RAM堆地址,第一包和第二包动态分配的首地址大概就在我划红线的地方;第二个图是栈的地址,当时也没有满;第三个图就是malloc返回失败的地方,给buffer申请的地址,前两次申请成功的时候就是第一个图我标红的附近,但是第三次突然就返回0了。
我看后面还有那么大片RAM,不像是内存不够和内存碎片啊,难道还要用个内存池?

11.png (160.03 KB, 下载次数: 0)

11.png

22.png (84.6 KB, 下载次数: 1)

22.png

33.png (69.46 KB, 下载次数: 1)

33.png

最新回复

不是看系统ram空间,是看malloc函数可以使用的空间,不是所有ram空间都能被分配的。  详情 回复 发表于 2017-5-19 14:22
 
点赞 关注

回复
举报

732

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
不是看系统ram空间,是看malloc函数可以使用的空间,不是所有ram空间都能被分配的。
 
个人签名亚里士缺德
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
汤权 发表于 2017-5-19 14:22
不是看系统ram空间,是看malloc函数可以使用的空间,不是所有ram空间都能被分配的。

那请问如何看malloc的分配的空间呢?我这种情况是不是就是没有可分配的RAM了,找一个内存池可以解决吗?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表