OpenEdv-开源电子网

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

请问一下在主函数里面定义的数组是在栈里面的吗?

[复制链接]

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-3-22
在线时间
6 小时
发表于 2016-6-4 22:47:20 | 显示全部楼层 |阅读模式
请问一下在主函数里面定义的数组是在栈里面的吗?
为什么我在主函数里面定义的数组的大小超过了栈的大小,MDK却没有任何提示?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2016-6-5 10:32:10 | 显示全部楼层
本帖最后由 东北小辉辉 于 2016-6-5 14:18 编辑

我的理解,main函数也属于函数,函数体内定义的auto局部变量应该是分配在堆上的,而不是栈上。

至于第二点,我没有尝试过,也许定义的时候不报错,但是实际运行的时候会进入hard fault?这个不清楚,楼主可以尝试一下。

这里是我弄错了,auto局部变量是分配到栈上的,static局部变量分布在静态数据区,特此订正。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-6-5 10:41:55 | 显示全部楼层
函数里面定义的数组是在栈里面的,如果你在函数里面定义了一个超过栈的数组,MDK肯定不会报错,但是运行的时候肯定会出错的
回复 支持 反对

使用道具 举报

10

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2016-1-6
在线时间
84 小时
发表于 2016-6-5 11:15:00 | 显示全部楼层
定义的数组是在栈里面,也就是ram。超过大小MDK不会显示,但是运行调试的时候会报错,是hard fault。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-3-22
在线时间
6 小时
 楼主| 发表于 2016-6-5 17:48:59 | 显示全部楼层
Nevermore 发表于 2016-6-5 11:15
定义的数组是在栈里面,也就是ram。超过大小MDK不会显示,但是运行调试的时候会报错,是hard fault。

那我怎么去判断我写的一个程序大概需要多少栈空间呢,比如我进行了递归调用或者别的,消耗的栈空间肯定比较多,怎样确保他不易出呢
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-3-22
在线时间
6 小时
 楼主| 发表于 2016-6-5 17:51:00 | 显示全部楼层
zuozhongkai 发表于 2016-6-5 10:41
函数里面定义的数组是在栈里面的,如果你在函数里面定义了一个超过栈的数组,MDK肯定不会报错,但是运行的 ...

那平时MDK提示内存不足的时候,只是全局变量区的空间不足,是吗?
回复 支持 反对

使用道具 举报

10

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
301
金钱
301
注册时间
2016-1-6
在线时间
84 小时
发表于 2016-6-7 16:44:42 | 显示全部楼层
2602082487 发表于 2016-6-5 17:48
那我怎么去判断我写的一个程序大概需要多少栈空间呢,比如我进行了递归调用或者别的,消耗的栈空间肯定比 ...

程序代码运行时一般不会占用太多内存,但是定义的变量(局部变量和全局变量)如果很多则很难保证,所以尽量少使用全局变量。
回复 支持 反对

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-8 10:25:16 | 显示全部楼层
你编译代码的时候,到最后不是提示你用了多少flash和ram的么
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 09:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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