[问题] x64 Release VS2013 bug吗?

楼主: yayax (夜夜叉)   2014-08-26 20:29:52
开发平台:
VS2013 on Win7 64bit
问题:
win32-Debug, win32-Release, x64-Debug 皆不会发生,
唯独 x64-Release 会发生。
喂入的资料:
没有
预期的正确结果:
AA00
错误结果:
0000
程式码:
int main(int argc, char* argv[])
{
char data[] = "AA+";
char buffer[] = "0000";
const char* ptr = data;
const char* next = strchr(ptr, '+');
for (long i = 0; i < (next - ptr); ++i)
buffer[i] = data[i];
puts(buffer);
return 0;
}
补充说明:
已尝试更新到 update 3,问题依旧。
相同的程式码在 C++Builder XE6 上没有问题。
请同事使用 VS2010 build x64-Release 似乎没问题
(他是XP,编译好丢到我电脑执行)。
毫无头绪
作者: bleed1979 (十三)   2014-08-26 21:23:00
(long)(next-ptr) 加个转型就会进循环。
作者: LPH66 (-6.2598534e+18f)   2014-08-26 23:27:00
指标相减得到的值型态是 ptrdiff_t
作者: Killercat (杀人猫™)   2014-08-26 23:31:00
你仔细看debug版的初始化pointer 不是0 是7fffffffrelease的话绝大多数都形态都会初始成bitwise 0诶等等 你不是这个问题,我搞错了 请跳过 XD
作者: firose (guest也是也是也是也是也)   2014-08-26 23:42:00
我测试没问题耶 Win7 x64 release
作者: LiloHuang (十年一刻)   2014-08-26 23:49:00
改一下编译器设定 /FAcs 可输出机器码以及组语对照这种时候看组合语言或机器指令最清楚了...把输出的 .cod 档案内容跟 VC2010 的比较一下便知道
作者: AntaresStar   2014-08-27 19:23:00
我测试也没有问题
楼主: yayax (夜夜叉)   2014-08-27 19:40:00
AntaresStar也是VS2013吗? 我目前试2010 & 2008 都不会发生
作者: AntaresStar   2014-08-27 19:47:00
VS2013 update 3, Win7 X64 SP1我用long跟long long都跑出下面那种code上面那组 cmp怎么会是位址比距离 不对啊
作者: LiloHuang (十年一刻)   2014-08-27 21:52:00
VS Express 2013 Update 3 + Win 7 帮你测试后一切正常cl.exe 编译器版号是 18.00.30723 for x64不妨开命令提示字符视窗,看看是用哪一个版本的 cl.exe感觉你的版号跟原始安装后的版号一样,并无套用到升级也许也可以看看是否有其他板友愿意分享可运行的版号建议可再开启VS视窗,选择[工具]->[扩充功能和更新]再检查一下是否有更新出现...
作者: AntaresStar   2014-08-27 23:26:00
我的cl是18.00.30723 还真的不一样所以看起来原po的版本说不定确实有bug XD
楼主: yayax (夜夜叉)   2014-08-27 23:54:00
家里的没更新,公司的有。马上来更个新等等..或许公司的也没安装成功...orz
作者: LiloHuang (十年一刻)   2014-08-28 00:37:00
既然家里的编译后的结果跟公司的一样,然后家里没更新恐怕真的是还停留在原始版本 XD 静候佳音囉 :)
楼主: yayax (夜夜叉)   2014-08-28 21:15:00
囧 公司网络挡更新~ 要再等等了

Links booklink

Contact Us: admin [ a t ] ucptt.com