这是C++的一个内情吗?
深圳大哥 2012-04-12 07:28:35 #include <iostream>
using namespace std;
int main()
{
char str[]="12345678901234567890";//共21个字符
strcpy(str, "123456789012345678901234");//共25个字符
printf(str);
return 0;
}
运行结果:
123456789012345678901234
如果将程序改为
#include <iostream>
using namespace std;
int main()
{
char str[]="12345678901234567890";//共21个字符
strcpy(str, "1234567890123456789012345");//共26个字符
printf(str);
return 0;
}
运行结果:
虽然结果输出了1234567890123456789012345 但程序马上接着就崩溃了
我在在VC++6.0中测试的,strcpy(char *strDest,const char *strSrc)为什么strSrc比strDest多少于四个字符不会崩溃,而超过四个了就崩溃了,当然我测试了多组数据,临界均是4个,在我本来的想法中,strDest应该大于等于strSrc的长度,如果不大于就会崩溃,但实践证明竟然有四个字符的差距,我开始以为是C++要一次分配的内存是4或8字符的倍数,但实践证明不是,而是只差四个字符
请问各位有什么想法,是我所不知道C++的内情,还是我某地方想歪了?望指点!