【发布时间】:2013-07-11 17:04:18
【问题描述】:
假设我这样做是为了复制字符串。
char str[] = "";
char *str2 = "abc";
strcpy(str, str2);
printf("%s", str); // "abc"
printf("%d", strlen(str)); // 3
然后,为什么它没有给我未定义的行为或导致程序失败。这样做有什么坏处?
【问题讨论】:
-
你怎么知道它没有给你未定义的行为?
-
因为它给了我正确的字符串长度。
-
这绝对是在修改堆栈,但显然还没有到[公然]破坏事物的地步。尝试更大的字符串,看看它的作用;我敢打赌你开始看到奇怪的事情发生了。
-
@ashish2expert 阅读:
strcat()implementation works but causes a core dump at the end