免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ytl
打印 上一主题 下一主题

全局变量的地址为什么会改变? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2010-01-24 19:28 |只看该作者
原帖由 net_robber 于 2010-1-24 19:25 发表
没有跳出条件的循环

for(;;i++)
{
   OOXX;
}


这个不重要,还没到跳出循环的时候就出问题了

论坛徽章:
0
32 [报告]
发表于 2010-01-24 19:32 |只看该作者
原帖由 stephen_du 于 2010-1-24 19:28 发表
建议你自己亲自做做试验再评论我的话ok?

早就试验过了: 去掉一部分代码就没问题了。所以看起来是程序本身的问题,编译器有问题的可能性很小
如果编译器没有问题,则无论怎么优化,printf输出的结果都应该是正确的

论坛徽章:
0
33 [报告]
发表于 2010-01-24 19:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
34 [报告]
发表于 2010-01-24 19:38 |只看该作者
原帖由 stephen_du 于 2010-1-24 19:35 发表
不是说是编译器有bug,优化不是bug,
你去掉的是什么代码?


优化不会改变逻辑,否则就是bug了
去掉的都是一些执行不到的死代码

论坛徽章:
0
35 [报告]
发表于 2010-01-24 19:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
36 [报告]
发表于 2010-01-24 19:52 |只看该作者
原帖由 stephen_du 于 2010-1-24 19:43 发表
你理解我说的“访问过频的变量,程序会不从内存里面读取”的意思吗?
你工作中有我说的这个问题的经验吗?
算了,算我多管闲事。


你是否想验证编译器存在bug? 如果不是,你的出发点就错了!因为优化不应该改变逻辑
再说了,变量的地址跟是否从内存读取有关系吗?
如果你怀疑编译器有问题,那就另当别论了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
37 [报告]
发表于 2010-01-24 20:17 |只看该作者
原帖由 ytl 于 2010-1-24 18:31 发表
全局变量的地址应该是放在代码段的,代码段应该是read only的,怎么可能被修改呢?


这个问题不跟你争论, 不要忘了是 &global_int  突变, 而不是 global_int 不对.

贴完整的代码吧, 这里很多人10分钟之内能看出这个问题.

论坛徽章:
0
38 [报告]
发表于 2010-01-24 20:26 |只看该作者
原帖由 群雄逐鹿中原 于 2010-1-24 20:17 发表


这个问题不跟你争论, 不要忘了是 &global_int  突变, 而不是 global_int 不对.

贴完整的代码吧, 这里很多人10分钟之内能看出这个问题.


代码前面贴了。完整的不可能,共几十个甚至上百个文件!
需要说明: &global_int变了,global_int自然就不对了,程序也就core了

[ 本帖最后由 ytl 于 2010-1-24 20:27 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
39 [报告]
发表于 2010-01-24 20:28 |只看该作者

回复 #38 ytl 的帖子

那几行代码显然不可能说明问题, 爱莫能助了

论坛徽章:
0
40 [报告]
发表于 2010-01-24 20:33 |只看该作者
原帖由 群雄逐鹿中原 于 2010-1-24 20:28 发表
那几行代码显然不可能说明问题, 爱莫能助了


代码太多了,所以我想先了解下哪些方面的错误可能导致全局变量地址改变,然后再有针对性地分析代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP