OpenEdv-开源电子网

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

局部数组能否引发全局数组错误?——函数中的数组导致全局数组错误,改为全局数组后问题解决。

[复制链接]

6

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2016-2-6
在线时间
64 小时
发表于 2016-9-10 22:13:53 | 显示全部楼层 |阅读模式
5金钱

用探索者定义了一个u8类型的240*240全局数组用于存储图像。二值化后数组只有0和255两个值。
在某个函数中定义了一个临时数组temp[240][240]对全局数组进行简单处理后存储,然后发现存储的数值不是理论的0和255。
串口发回来全部数据发现出现许多乱七八糟的值。将函数内的局部数组定义为另一个全局数组后该问题解决。
编译的时候没有警告和错误。

请问这么看来是不是局部数组影响到了全局数组?理论上不应该会影响到的吧?求解释,谢谢大家。


最佳答案

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

堆栈溢出,论坛内查一下相关帖子
Junior in BIT.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-9-10 22:13:54 | 显示全部楼层
larry 发表于 2016-9-11 09:41
您好,请问能不能详细的解释一下?我觉得您的意思是,局部的堆栈空间不够了,所以占用了全局的?我也这么 ...

堆栈溢出,论坛内查一下相关帖子
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11548
金钱
11548
注册时间
2014-4-1
在线时间
1316 小时
发表于 2016-9-10 22:51:47 | 显示全部楼层

是不是超出容量了?
但编译、连接应当有报错,说不通。


回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2016-9-10 23:18:40 | 显示全部楼层
stack overflow

搞清楚不同的变量存储在哪里,空间有多大。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-9-11 08:29:48 | 显示全部楼层
堆栈
回复

使用道具 举报

6

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2016-2-6
在线时间
64 小时
 楼主| 发表于 2016-9-11 09:37:04 | 显示全部楼层
xuande 发表于 2016-9-10 22:51
是不是超出容量了?
但编译、连接应当有报错,说不通。

我认为没有超容量吧。如果定义成全局数组和局部数组,应该占用相同的容量吧?改成全局数组就没问题了。
Junior in BIT.
回复

使用道具 举报

6

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2016-2-6
在线时间
64 小时
 楼主| 发表于 2016-9-11 09:39:20 | 显示全部楼层
aozima 发表于 2016-9-10 23:18
stack overflow

搞清楚不同的变量存储在哪里,空间有多大。

您好,您的意思是不是指,给全局和局部分配的堆栈空间不同,局部的如果不够会占用全局?可是我的全局空间可以开到两个240*240,那么就算是局部数组占用了全局空间,也是有空间可以用的,为何非要占用已经使用了的?
Junior in BIT.
回复

使用道具 举报

6

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2016-2-6
在线时间
64 小时
 楼主| 发表于 2016-9-11 09:41:48 | 显示全部楼层

您好,请问能不能详细的解释一下?我觉得您的意思是,局部的堆栈空间不够了,所以占用了全局的?我也这么想过,只是不清楚哪里能找到说明,说局部的堆栈能开到多大;同时局部的堆栈如果占用了全局的话,我全局可以开到两个240*240数组没有问题,如果占用为何要占用已经使用了的空间,不去使用没有占用的全局空间?
Junior in BIT.
回复

使用道具 举报

6

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
394
金钱
394
注册时间
2016-2-6
在线时间
64 小时
 楼主| 发表于 2016-9-11 11:19:58 | 显示全部楼层
龙之谷 发表于 2016-9-11 10:43
堆栈溢出,论坛内查一下相关帖子

非常感谢,明白了一些。
Junior in BIT.
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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