解析下为什么??)输出是]
测试环境:Microsoft Windows XP Professional Service Pack 3
编译器:VC6.0 VS2008 MinGW
执行下列代码:
cout<<"??)"<<endl;
MinGW输出正常,而VC6.0和VS2008则输出为]
换成printf输出依旧是],说明不是cout的问题,
改代码成:
char temp[4] = "??)";
cout<<temp<<endl;
调试发现,在输出前temp里面的内容就变成']',而单独对每个字符进行复制,输出是没问题的,说明问题来源于
char temp[4] = "??)";
看这句的汇编语言:
mov ax,word ptr [string "]" (417808h)]
说明这个问题来于编译过程,微软的编译是通过cl.exe来进行了的.
IDA工具用的不熟悉,接下来无法分析了。
测试环境:Microsoft Windows XP Professional Service Pack 3
编译器:VC6.0 VS2008 MinGW
执行下列代码:
cout<<"??)"<<endl;
MinGW输出正常,而VC6.0和VS2008则输出为]
换成printf输出依旧是],说明不是cout的问题,
改代码成:
char temp[4] = "??)";
cout<<temp<<endl;
调试发现,在输出前temp里面的内容就变成']',而单独对每个字符进行复制,输出是没问题的,说明问题来源于
char temp[4] = "??)";
看这句的汇编语言:
mov ax,word ptr [string "]" (417808h)]
说明这个问题来于编译过程,微软的编译是通过cl.exe来进行了的.
IDA工具用的不熟悉,接下来无法分析了。