硬汉嵌入式论坛

 找回密码
 立即注册
查看: 718|回复: 1
收起左侧

[技术讨论] 全局变量的诡异问题

[复制链接]

11

主题

9

回帖

42

积分

新手上路

积分
42
发表于 2022-4-6 11:39:28 | 显示全部楼层 |阅读模式
本帖最后由 noxworld 于 2022-4-6 11:45 编辑

今天遇到了一个很奇诡的问题。定义了一个全局变量数组 data[4]={4,4,4,4},然后在程序里面分别读写这个数组,如果用data【i】=val写全局变量后,再读取全局变量 tmp = data【i】, 发现执行完data【i】=val语句后,全局变量的值的确改变了,如果不停的读取tmp = data【i】,tmp的值开始的确是val,但是过不了几秒钟,tmp 的值就变成data的初始值4了,这个几秒钟有时短到1秒,长到10秒不等。这个程序是裸机程序,没有其它地方会修改这个变量,尝试增加stack也解决不了。不知道大家伙遇到过同样的问题没有。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107380
QQ
发表于 2022-4-6 12:00:02 | 显示全部楼层
估计程序其它地方有点问题。频繁tmp = data, 程序优化会出现直接从寄存器读取,如果你的程序异常了,修改了这个寄存器,会有这种问题。

你可以data定义前加个__IO,看看什么效果。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-29 08:42 , Processed in 0.188632 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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