OpenEdv-开源电子网

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

内存管理实验的问题。求助~~

[复制链接]

9

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2019-7-28
在线时间
38 小时
发表于 2020-9-8 15:18:01 | 显示全部楼层 |阅读模式
20金钱
网上说的好多malloc申请是在堆里边。。

原子哥写的例程申请的内存是静态存储区 还是 堆里边呢 ?
如果是堆里边为啥启动文件里边堆的大小没有做修改。 (默认是0x200,  但是一般跑系统和lwip中根本不够用啊)
(我的理解)是不是一般我们申请内存都是在静态存储区,定义一个大数组 ,然后再里边申请和释放内存 。

最佳答案

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

申请的内存是在静态存储区。他加了static修饰,也即是只对本模块可见,对其他模块不可见,这样起到一定的保护作用。然后我们想使用这个内存只能通过API ( my_malloc )来获取,这个内存只对本模块可见,所以对my_malloc也是可见的。如果我们想使用内存,就需要使用这个函数来进行内存申请,而这个内存由这个静态数组提供。 至于启动文件里面的堆,是通过C语言支持的库函数malloc调用的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

314

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1039
金钱
1039
注册时间
2020-7-21
在线时间
258 小时
发表于 2020-9-8 15:18:02 | 显示全部楼层
弦子的弦 发表于 2020-9-8 16:37
按个人的理解,STM32的内存管理有堆区,栈区,静态区,其中堆区是程序员负责管理分配的存储区域,栈区是系 ...

申请的内存是在静态存储区。他加了static修饰,也即是只对本模块可见,对其他模块不可见,这样起到一定的保护作用。然后我们想使用这个内存只能通过API ( my_malloc )来获取,这个内存只对本模块可见,所以对my_malloc也是可见的。如果我们想使用内存,就需要使用这个函数来进行内存申请,而这个内存由这个静态数组提供。


至于启动文件里面的堆,是通过C语言支持的库函数malloc调用的
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-9-8 16:37:20 | 显示全部楼层
按个人的理解,STM32的内存管理有堆区,栈区,静态区,其中堆区是程序员负责管理分配的存储区域,栈区是系统复制管理分配的区域,静态区是不变的,也就是程序编译完成后,就不会在改变的区域,比喻一些字符串常量等。所以malloc 应该就在堆区了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 03:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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