社区
C语言
帖子详情
ARM裸机开发 malloc函数测试中的问题
篱下慢慢路
2018-07-30 03:07:58
由于自己的工程中一直无法成功使用malloc申请动态内存,因此写了一段很简单的malloc动态内存分配测试程序。图中当MaxNum为600时,动态内存申请就失败,malloc返回值为NULL。当MaxNum为较小值是就可以。所以这是一个内存大小限制的问题。我想知道这个内存大小限制在哪里。能否增大这块动态内存申请的区域呢?在网上查阅动态内存空间存放在堆中,请问能否扩大堆的大小? 因为我需要申请多个动态空间内存。希望各位老师和前辈能为我指点一二,这个问题困扰我几天了。
...全文
419
6
打赏
收藏
ARM裸机开发 malloc函数测试中的问题
由于自己的工程中一直无法成功使用malloc申请动态内存,因此写了一段很简单的malloc动态内存分配测试程序。图中当MaxNum为600时,动态内存申请就失败,malloc返回值为NULL。当MaxNum为较小值是就可以。所以这是一个内存大小限制的问题。我想知道这个内存大小限制在哪里。能否增大这块动态内存申请的区域呢?在网上查阅动态内存空间存放在堆中,请问能否扩大堆的大小? 因为我需要申请多个动态空间内存。希望各位老师和前辈能为我指点一二,这个问题困扰我几天了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
用临时文件代替动态内存。个人建议。
ufibers:用户空间 Fiberscoroutines 库
ufibers - 用户空间光纤 版权所有 :copyright: 2013-2015 Drew Thoreson 关于 ufibers 是一个用户空间纤程/协程库。 一个纤程很像一个线程,除了纤程是自愿抢占的。 可移植性 ufibers 是用 ISO C99 编写的,有一些汇编语言例程来管理机器上下文。 它不依赖于任何特殊的操作系统支持,只使用 libc
中
的几个函数(malloc、free 和 exit),因此它应该可以在任何操作系统上运行,甚至可以在
裸机
上运行。 由于 ufibers 部分是用汇编语言编写的,因此它不能在体系结构之间移植。 然而,汇编语言例程很小并且是自包含的,因此对于具有目标架构工作知识的人来说应该很容易移植。 目前 ufibers 支持 x86、x86_64 和
ARM
架构。 建造 您需要一个支持 C99 标准的 C 编译器。 GCC 和 Clang 工作。 要将库构建为存档:
ARM
裸机
开发
中
内存管理库RT_HEAP的使用
在使用
arm
芯片进行
裸机
开发
的时候,很多时候都需要内存管理的功能,我们可以使用自己写的内存管理程序,也可以直接使用标准库,不过我一般比较喜欢标准库,速度快,今天就来说说在C语言环境下怎么样进行内存的动态使用 首先,应该初始化C堆,初始化代码如下 #include "malloc.h" #pragma import (__use_realtime_heap)...
Windows内核-内存管理
- Windows内存管理主要学习什么 - 线性地址是如何管理的 - 物理地址是如何管理的 - 缺页异常解决了什么
问题
- 堆,栈这些内存是怎么申请的 - Windows内核情景分析 第三章 - 不管什么程序,除了程序代码本身所占用的空间外,程序在运行过程
中
总得使用一定的内存空间,因为数据也要占用空间。这些存储数据的内存空间大致可分为三类: - 全局变量:编译工具链接的时候就静态的分配好了 - 局部变量:调用子函数的时候,在栈上分配 - 通过malloc分配,可以通过free释放,重复利用 - 每个进程都有4GB的空间,但是这4GB空间并不是都在使用,有没有一个地方在记录着哪些地址空间已经使用了,哪些没有使用? - 肯定有一个地方在记录 - 怎么记录线性地址是否是可以用的? - 每个进程都有自己的线性地址管理
裸机
malloc实现
在
arm
裸机
程序或者RTOS时,会用到malloc,这里参考某网友实现尽心的
嵌入式
裸机
编程
中
使用malloc、free会怎样?
在嵌入式
裸机
编程
中
,作为一名初级的CODER。经常要与CPU、内存等打交道。CPU作为系统的动力源,其重要程度不言而喻。但是,在
裸机
编程
中
,对内存的管理也不容忽视。如果稍微不注意,轻则,可...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章