OpenEdv-开源电子网

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

如果一个数组的生命周期是整个程序的大循环,那么用malloc还有意义吗?

[复制链接]

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2018-4-28 17:43:53 | 显示全部楼层 |阅读模式
数组用malloc,不要直接定义,如果一个数组的生命周期是整个程序的大循环,那么用malloc还有意义吗?和自己定义有区别吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

215

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2035
金钱
2035
注册时间
2017-12-11
在线时间
454 小时
发表于 2018-4-28 18:20:41 | 显示全部楼层
你只是考虑到数据的生命周期。没看到数据的组织形式。数组是在编译器间就确定的。堆可以在运行时间随机申请。
例如OS中申请任务,那么当然需要申请任务控制块,可是OS根本不知道用户会使用多少个任务,当然不知道需要多少任务控制块,这时候只能使用堆。
再笼统的说,不管是静态空间,还是堆空间,归根到底是ram,所以本质上应该都是相同的。
ram的数据只要不断电,就会一直存在。栈也同样如此,只不过因为栈的组式形式,导致这段内存被其它数据覆盖,所以栈的生存周期短。
回复 支持 反对

使用道具 举报

37

主题

596

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1574
金钱
1574
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-4-28 18:46:36 | 显示全部楼层
本帖最后由 candylife9 于 2018-4-28 18:49 编辑

如果你事先确定你这个数组是要一直用的,不是临时用的,那没有区别。也没有人用malloc来分配整个生命周期的空间。
回复 支持 反对

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2018-5-2 17:11:00 | 显示全部楼层
candylife9 发表于 2018-4-28 18:46
如果你事先确定你这个数组是要一直用的,不是临时用的,那没有区别。也没有人用malloc来分配整个生命周期的 ...

明白了谢谢
回复 支持 反对

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2018-5-3 13:43:42 | 显示全部楼层
bootblack 发表于 2018-4-28 18:20
你只是考虑到数据的生命周期。没看到数据的组织形式。数组是在编译器间就确定的。堆可以在运行时间随机申请 ...

谢谢大神
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 04:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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