ARM裸机开发 malloc函数测试中的问题

篱下慢慢路 2018-07-30 03:07:58

由于自己的工程中一直无法成功使用malloc申请动态内存,因此写了一段很简单的malloc动态内存分配测试程序。图中当MaxNum为600时,动态内存申请就失败,malloc返回值为NULL。当MaxNum为较小值是就可以。所以这是一个内存大小限制的问题。我想知道这个内存大小限制在哪里。能否增大这块动态内存申请的区域呢?在网上查阅动态内存空间存放在堆中,请问能否扩大堆的大小? 因为我需要申请多个动态空间内存。希望各位老师和前辈能为我指点一二,这个问题困扰我几天了。
...全文
419 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jack's choice 2019-03-21
  • 打赏
  • 举报
回复
不建议用临时文件代替动态缓存,因为文件的读写操作相比动态内存的访问,非常非常的耗时。可以试着不在堆上申请,在栈上申请,创建一个全局的数组吧
jiqiang01234 2018-08-09
  • 打赏
  • 举报
回复
找到startup.s文件,把堆大小改大
Chuckyuan9527 2018-08-01
  • 打赏
  • 举报
回复
静待结果,我现在也是在学arm,估计也会有如此问题
「已注销」 2018-07-31
  • 打赏
  • 举报
回复
程序内存取决于您的系统,请检查一下您系统heap的大小,最大600实际也就2K多一些,通常应该不会有嵌入平台的物理内存有这么小,检查一下软件环境的配置(具体您的系统我不知道,看看启动代码给heap分配的大小,或lds等等)

另外,测试程序有一处可能会破坏内存的错误:for(I = 0; I < 600; I++) 应该改为for(I = 0; I < MaxNum; I++)更合适一些
weixin_38305120 2018-07-31
  • 打赏
  • 举报
回复
这个和单片机物理内存有关系吧。。在pc上malloc太大照样返回null
赵4老师 2018-07-30
  • 打赏
  • 举报
回复
用临时文件代替动态内存。个人建议。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧