溢出时C++数组绑定异常 - "cout"而没有"cout"

2 c++ arrays crash

#include <iostream>

int main()
{
  int array1[10] = {0};
  char* array2[10] = {'\0'};

  for (int i = 0; i <= 100; i++)
  {
    std::cout << array1[i];   // This does not crash 
    //std::cout << array2[i]; // This crashes
    array1[i]; // Wont crash here
    array2[i]; // nor here, Why? because there is no cout??
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

好的,对于在这里回答的人,我知道我故意为阵列做了一个溢出.那么为什么程序会在"cout"上崩溃,而不是其他?

谢谢!

Unc*_*eiv 5

鉴于该值未被使用,它可能被编译器优化掉,并且在运行时从未真正检索过.

  • 可能是正确的+1.需要注意的重要一点是,未定义的行为意味着_exactly_:undefined.它可能有效,但可能没有.根据我们所知道的月亮的相位,它可能会起作用.不要这样做! (2认同)