【发布时间】:2013-11-13 19:13:02
【问题描述】:
我正在编写代码并意识到我可以“访问”数组中与数组大小相同或更大的索引的元素。为什么这不会产生错误?
例如,
#include <iostream>
using namespace std;
int main ()
{
int b_array[5] = {1, 2, 3, 4, 5};
cout << b_array[5] << endl // Returns 0
<< b_array[66] << endl; // Returns some apparently random value.
return 0;
}
【问题讨论】:
-
未定义的行为。任何事情都有可能发生。
-
这是未定义的行为。运行时发生的任何事情都是错误。
-
@ThisIsNotAnId,因为它需要为您可能不会使用的东西付费。如果你想要边界检查,你可以自己做。
-
这是设计使然。这是 C++ 编译器和 C 运行时检查的众多事情之一。如果您想要更安全的语言,请尝试 C#、Java 或其他更高级别的语言。
-
标准/编译器注释