OpenEdv-开源电子网

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

有系统和无系统 的malloc 内存分配问题

[复制链接]

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2014-12-18
在线时间
13 小时
发表于 2015-1-29 18:25:18 | 显示全部楼层 |阅读模式
5金钱

虽然平时写点小代码,但很多问题还是一直没整明白。。。。。。比如。。。。。。

STM32的一款片子,128K的RAM,在里面跑了个FREERTOS,configTOTAL_HEAP_SIZE给了25K; 又加了个LwIP,MEM_SIZE给了5K

现在算算片子的RAM还剩 128-25-5 =98K.。。。。。。。

那么这98K是谁来管理的?如果我要在系统的某个任务里使用malloc()分配2K的空间,那这2K的空间是从哪里里申请得到的?

为什么使用malloc()分配不到大于1K的空间


希望知道的人帮忙解答一下

最佳答案

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

1、如果你使用KEIL自带的malloc和free函数的话应该可以申请这98K的内存,我没用过自带的,或者你也可以将我们的内存管理实验的代码移植过去管理这98K的内存,这样你就可以申请和释放内存了。 2、在startup_stm32f10x_hd.s文件中定义了KEIL自带的malloc所管理的内存区大小,就是Heap_Size的大小。如下图所示,默认是0X00000200,即512字节,因此你不能申请到大于1k的内存空间,你需要将这值改大。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-1-29 18:25:19 | 显示全部楼层
1、如果你使用KEIL自带的malloc和free函数的话应该可以申请这98K的内存,我没用过自带的,或者你也可以将我们的内存管理实验的代码移植过去管理这98K的内存,这样你就可以申请和释放内存了。
2、在startup_stm32f10x_hd.s文件中定义了KEIL自带的malloc所管理的内存区大小,就是Heap_Size的大小。如下图所示,默认是0X00000200,即512字节,因此你不能申请到大于1k的内存空间,你需要将这值改大。

开往春天的手扶拖拉机
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 07:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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