全局变量莫名奇妙值改变

modestwolf 2008-08-01 06:39:40
定义了一个静态的变量,结果在某个时候其值变化掉了。
我在每个给这个变量赋值的地方都设置了断点,并没有执行这些语句。
大家可有碰到这种情况,可能是什么原因。
程序由于需要,分配了一个1g的内存,同时定义了很多数组,
会不会是这个变量的地址被别的地方用到了,所以值变了。
...全文
445 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
talaolaode 2008-08-05
  • 打赏
  • 举报
回复
加上volatile试试,不从寄存器取值,每次都从内存取值。
moonwrong 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 k2eats 的回复:]
你这个值是要不被改变吗?那就设为const
[/Quote]
好习惯
hityct1 2008-08-05
  • 打赏
  • 举报
回复
分配了一个1g的内存?也许不会成功。贴代码看看。
华亭真人 2008-08-05
  • 打赏
  • 举报
回复
程序由于需要,分配了一个1g的内存,同时定义了很多数组,


。。。这是一个什么样的程序,我很想瞻仰一下!
brookmill 2008-08-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 modestwolf 的回复:]
那vs2005怎么设置在更改某个地址的值的时候停下来?
[/Quote]
Debug -- New Breakpoint -- New Data Breakpoint
iBug168 2008-08-02
  • 打赏
  • 举报
回复
有没有代码...
稍微贴点出来看看.................
guzhilei1986 2008-08-02
  • 打赏
  • 举报
回复
调试一下,看看在哪一句话的时候全局变量改变了
modestwolf 2008-08-02
  • 打赏
  • 举报
回复
值当然是要改变的,只是它在我不想改变的时候变了,而且这之间我没有赋值。
代码分散在多个文件当中,中间执行的语句也很多,我没办法全部贴上来,
看了楼上许多,觉得内存泄露比较可能,等跟踪看看

那vs2005怎么设置在更改某个地址的值的时候停下来?
mybabyanddear 2008-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 k2eats 的回复:]
你这个值是要不被改变吗?那就设为const
[/Quote]
越界错误的话,const是没用的
把这个全局变量的声明位置向前移动来做调试吧,有可能是其前面的某些数组越界了
fuzhufang 2008-08-02
  • 打赏
  • 举报
回复
问题表述得模糊,想要大家帮忙,把代码拿出来.
brookmill 2008-08-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 boxban 的回复:]
可能是内存操作越界引起的。
如果是VC,可以考虑设置数据断点,抓出越界操作的元凶
[/Quote]
一般的调试工具都可以设置数据断点,这是个好办法
brookmill 2008-08-01
  • 打赏
  • 举报
回复
如果是数组越界或者野指针引起的,声明成const也防止不了
e_sharp 2008-08-01
  • 打赏
  • 举报
回复
问题说的太模糊了
thirdapple 2008-08-01
  • 打赏
  • 举报
回复
在申明这个const之前声明一段空的数组,然后检查是否改变了,如果那段数组改变了,应该就是内存溢出问题。
wjb_yd 2008-08-01
  • 打赏
  • 举报
回复
有可能不小心访问到它的内存了吧,拿指针误该内存内容
arong1234 2008-08-01
  • 打赏
  • 举报
回复
系统不可能保证的,这个需要自己编程小心,正确的访问内存,不要犯错误。

这不一定是指针带来的后果,下面的例子可以给你一个不用指针导致的结果

定义三个全局变量
char buffer1[10];
int a;
char buffer2[10]

然后执行下面代码看看
a = 1;
strcp(buffer1, "abcdeabcdeabcde");
strcp(buffer2, "abcdeabcdeabcde");

看看这时a等于多少
[Quote=引用 3 楼 modestwolf 的回复:]
我想也是有这种可能,但是不知道如何让系统保证不会有这种情况出现,是不是指针带来的后果???
工作主要是verilog,c一些基础的东西都忘记了,人生充满了无奈。。。
[/Quote]
JIGSONG 2008-08-01
  • 打赏
  • 举报
回复
还是改为容器去用吧...
[Quote=引用楼主 modestwolf 的帖子:]
定义了一个静态的变量,结果在某个时候其值变化掉了。
我在每个给这个变量赋值的地方都设置了断点,并没有执行这些语句。
大家可有碰到这种情况,可能是什么原因。
程序由于需要,分配了一个1g的内存,同时定义了很多数组,
会不会是这个变量的地址被别的地方用到了,所以值变了。
[/Quote]
wangdeqie 2008-08-01
  • 打赏
  • 举报
回复
加上const 禁止修改其值!还有问题,就贴代码
junsky2006 2008-08-01
  • 打赏
  • 举报
回复
帮帮忙,顶
K行天下 2008-08-01
  • 打赏
  • 举报
回复
你这个值是要不被改变吗?那就设为const
加载更多回复(3)

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧