#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"上崩溃,而不是其他?
谢谢!
鉴于该值未被使用,它可能被编译器优化掉,并且在运行时从未真正检索过.