【发布时间】:2015-01-29 15:39:41
【问题描述】:
我有下一个代码:
char arr[6] = "Hello";
strcpy(arr, "Hello mellow");
cout << strlen(arr) << ", " << arr << endl; // 12, Hello mellow
char arr1[] = "Hello";
strcpy(arr1, "Hello mellow");
cout << strlen(arr1) << ", " << arr1 << endl; // 12, Hello mellow
那么,为什么会这样呢?为什么它不以某种方式受到限制?无论我输入什么而不是“Hello mellow”,它都能正常工作并打印出来。
【问题讨论】:
-
它有时可以工作,但也可能不会甚至崩溃程序。
-
你很幸运(或没有)。
-
Why doesn't it get limited somehow?你问的那个问题就是你问题的答案。 “以某种方式受到限制”是什么意思?崩溃?突然弹出一条消息说“你做了一件坏事”?什么都没有发生?这就是未定义行为的含义。我们中的任何一个人,甚至您自己都不知道“以某种方式受到限制”是什么意思——它对任何人都可能意味着任何事情。