ltrtt 2020-10-20 15:35 采纳率: 0%
浏览 53

arm-linux c 关于全局变量的BUG

今天碰到了一个非常奇怪的现象,求高人指点。
用的海思的linux内核,版本3.10
情况分为以下三个时间段:
1. 定义了一个全局结构体变量 A ,开机读配置文件,把文件里的参数读到 A 里,然后把该参数全部打印出来。
2. 然后开启了一个线程,根据 A 里存的服务器地址,连接服务器,并打印该地址,结果发现服务器地址不对,跟开机时读的参数不一致。
3. 发现不一致之后,我在主线程里调用打印参数的函数查看服务器地址,看是否有改动,结果发现此时打印的服务器地址与开机显示的一致

也就是在不同线程里,读出来的值不一样,为什么会出现这样的情况呢?
如果说是变量被修改了,那么我在2里发现变量变化了,在3里打印的时候,应该也是被修改的,但是在3里打印的时候却是和1里的值是一样的

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 02:09
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可能有多种原因,但最常见的是由于内存泄漏或共享数据结构的问题。下面是一个可能的解决方案,仅供参考:

    首先,检查你的程序中是否存在任何可能导致内存泄露的问题,例如使用未释放的资源或者没有正确关闭文件等。

    其次,确保你正在使用的共享数据结构(如全局变量)是正确的,并且在所有线程中都有相同的副本。如果共享数据结构中的值被更改,那么不同的线程可能会看到不同的值。

    最后,尝试添加一些调试信息,以便更清楚地了解问题所在。例如,可以使用printf或log语句来跟踪变量的变化,并观察它们在不同线程中的行为。

    希望这些建议能帮助你解决问题!如果你提供更多的上下文信息,我可能会提供更具体的建议。

    评论

报告相同问题?

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表