免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1818 | 回复: 4
打印 上一主题 下一主题

关于编译优化选项的问题请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-25 14:27 |只看该作者 |倒序浏览
函数中有个变量没有初始化,但是通过printf发现系统给的值是0,这个变量在某条执行路经下直接返回给该函数的调用者,没有任何地方修改过它。当用普通的优化选项编译时发现该函数正常,返回值是0,但是用高优化选项编译的时候发现虽然没有修改这个变量,但是最后返回的时候却变成了-1。

这大概能是什么原因呢?谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-10-25 14:31 |只看该作者
多试几次看看是不是一直是这个值, 如果是栈上的数据的话, 它的值应该是未定的.
另外gcc -S查看其汇编看.

论坛徽章:
0
3 [报告]
发表于 2007-10-25 21:12 |只看该作者
看compiler把没有初始化的变量放在哪里。
如果在栈上(-g),第一次读OS保证是零。
如果只存在寄存器中(优化),就是很随机的。

论坛徽章:
0
4 [报告]
发表于 2007-10-26 15:02 |只看该作者
第一次就一定是0吗?

论坛徽章:
0
5 [报告]
发表于 2007-10-26 20:36 |只看该作者
原帖由 Sorehead 于 2007-10-26 15:02 发表
第一次就一定是0吗?

进程第一次读anonymous memory address, 一定是0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP