VC生成了异常的代码,导致程序运行出错,难道确实是VC的有关问题吗
VC生成了错误的代码,导致程序运行出错,难道确实是VC的问题吗?
发现好几次这种问题了,比如:
if(a)
{
a=5;
fun();
}
else
{
a=3;
fun();
}
编译出来的结果逆向出来成了
if(a)
{
a=5;
fun();
}
else
{
a=3;
}
第二个fun调用没了,真搞不懂,有点像自动优化的结果,但又绝对不是;
还有一种:
a=5;
fun();
if(b)
fun();
逆向结果为:
a=5;
fun();
__asm pop edi;
也就是那个if块变成了一个pop edi的指令,程序运行到这里的话就会堆栈不平衡而崩溃.
而第二种情况有可能重新编译一次又是对的。难道是因为我用的不是正版?
誰能帮我解决这个问题,以后天天来送分都可以,先谢谢了。
------解决方案--------------------
如果是VC6, 需要装补丁, 否则经常出现这样的问题. SP5 或 SP6
------解决方案--------------------
即使不装补丁,应该也不会有这么荒唐的错误
楼主可以尝试关闭编译的优化选项
发现好几次这种问题了,比如:
if(a)
{
a=5;
fun();
}
else
{
a=3;
fun();
}
编译出来的结果逆向出来成了
if(a)
{
a=5;
fun();
}
else
{
a=3;
}
第二个fun调用没了,真搞不懂,有点像自动优化的结果,但又绝对不是;
还有一种:
a=5;
fun();
if(b)
fun();
逆向结果为:
a=5;
fun();
__asm pop edi;
也就是那个if块变成了一个pop edi的指令,程序运行到这里的话就会堆栈不平衡而崩溃.
而第二种情况有可能重新编译一次又是对的。难道是因为我用的不是正版?
誰能帮我解决这个问题,以后天天来送分都可以,先谢谢了。
------解决方案--------------------
如果是VC6, 需要装补丁, 否则经常出现这样的问题. SP5 或 SP6
------解决方案--------------------
即使不装补丁,应该也不会有这么荒唐的错误
楼主可以尝试关闭编译的优化选项