在C++中访问数组越界时为何不会产生任何错误?
这是因为C++不进行边界检查。Java和python等语言有边界检查,所以如果你尝试访问越界元素,它们会抛出错误。C++的设计原则是它不应该比等效的C代码慢,而C不进行数组边界检查。
因此如果你尝试访问越界的内存,你的程序的行为是未定义的,正如C++标准中所述。一般来说,每当你遇到未定义的行为时,任何事情都可能发生。应用程序可能会崩溃,可能会冻结,可能会运行正常(或至少看起来运行正常),可能会干扰其他应用程序(在现代操作系统上不太可能),等等。
广告