OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4394|回复: 6

原子兄的内存管理碎片问题?

[复制链接]

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
发表于 2015-11-2 15:05:54 | 显示全部楼层 |阅读模式
5金钱
原子兄,有个问题请教:
  关于你的那个内存malloc和free这两个函数功能会出现碎片么?有碎片管理么?

最佳答案

查看完整内容[请看2#楼]

会生成内存碎片,没做碎片管理,做的话就很复杂了,STM32就不适合了
创新超越梦想,拼搏创造奇迹....
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-11-2 15:05:55 | 显示全部楼层
会生成内存碎片,没做碎片管理,做的话就很复杂了,STM32就不适合了
开往春天的手扶拖拉机
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2015-11-2 16:21:36 | 显示全部楼层
之前用的iar自动链接的dlmalloc,貌似很好用,不过就是编译后有8k的代码
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-11-4 13:51:54 | 显示全部楼层
回复【3楼】zuozhongkai:
---------------------------------
那用的话 应该没有什么危险吧,只是浪费了点内存 是不?
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

57

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
446
金钱
446
注册时间
2013-2-20
在线时间
1 小时
 楼主| 发表于 2015-11-4 13:52:26 | 显示全部楼层
回复【2楼】ianhom:
---------------------------------
写个教程嘛...
创新超越梦想,拼搏创造奇迹....
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2015-11-4 14:23:52 | 显示全部楼层
回复【5楼】废墟崛起之厦:
---------------------------------
我用的是iar的环境,iar中如果你想用标准库中的malloc,只需要在文件中包含stdlib.h,然后调用malloc就会自动链接到dlmalloc中的malloc函数,也看了下iar的说明文档,貌似用iar for arm 6.x版本之后就使用了dlmalloc。如果不想用这个dlmalloc就自己写一个malloc,free,relloc函数就可以重定向,我的情况就是因为这个dlmalloc中编译完有8k的大小,加上我工程的代码超过了flash容量,所以就没用dlmalloc,使用了自己写的malloc。

至于dlmalloc有没有碎片管理,可以百度一下,网上有源码和详解。

KEIL的环境我没有使用过,所以不知道在keil环境下使用的库函数是什么(keil有个microLIB),这里的malloc是否满足你的要求我也不是很清楚。如果dlmalloc满足你的要求,你可以加入dlmalloc的源码到你的工程中进行重定向试试看。
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2015-11-4 14:25:36 | 显示全部楼层
没有MMU的芯片无法进行碎片整理,只能由使用者自己去留意。并把紧急任务需要的内存固定或先分配好。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 16:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表