全局变量被修改的bug与原因
Posted 我要出家当道士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局变量被修改的bug与原因相关的知识,希望对你有一定的参考价值。
目录
1、现象
在一个 C 文件中连续定义了两个很大的全局变量
byte buff[8192];
byte task[256];
在程序运行过程中,每次需要在 buff 中拼接输出数据,并根据 task 判断任务状态。在程序运行过程中发现,task数组中的数据会无故的改变,数值随机,而且出现的位置固定。
2、原因
后发现是因为buff越界赋值导致,buff 与 task 数组声明位置邻近,可能物理内存上的位置也邻近,当 buff 越界时污染了 task原有位置的值。
以上是关于全局变量被修改的bug与原因的主要内容,如果未能解决你的问题,请参考以下文章