|
发表于 2007-2-26 16:07:43
|
显示全部楼层
Post by swink
以下代码
#include <iostream>
void main()
{
char *p = "12345678";
char a[1];
memset(a, 0, 1);
strcpy(a, p);
printf("%s\n", a);
}
我是在windows下用的VC6.0
如上代码,我不理解的是对char a[1]已经作了大小限制,可是为什么对其进行strcpy()操作时没有出错?编译和执行都通过了,输出为:12345678。
上述代码中如果char *p = "123456789"时编译通过,执行时倒掉。
菜鸟问题,还希望各位大侠能给与帮助。
显示没有错很正常,要看执行的时候堆栈的具体情况,显示出来的结果没有错并不表示运行过程没有出错。具体情况你可以把你的可执行文件反汇编一遍瞧瞧汇编代码。 |
|