linux amd64, ubuntu9.10 gcc 4.4.1
代码如下:
Int64 tmp=0;
int tmpA,tmpB;
......
......
......
*(int*)(tmp + 1) = tmpA;
*(int*)tmp = tmpB;
这种赋值方法被RELEASE版本优化,导致下面的执行结果出错,DEBUG版本正常。
tmp = ~tmp + 1;
修改方法: volatile Int64 tmp = 0;
or tmp = tmpA; tmp = (tmp << 32) +tmpB;
windows 下,相同的代码无问题。
阅读(1134) | 评论(0) | 转发(0) |