分段错误是C ++中实际的未定义行为吗?

未定义的行为是一种给予实现者(例如,编译器或OS的实现者)和计算机自由的方式,以使计算机可以执行他们“想要的”任何事情,换句话说,就是不关心后果。

发生分段错误的情况本质上是暂时的。它们不会总是导致分段错误,但也可以正确运行(或至少看起来如此)。例如,请看以下代码片段-

#include<iostream>
int main() {
    int arr[2];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 2; // Undefined behaviour
    arr[3] = 3; // Undefined behaviour
}

该代码可能会正确运行或导致分段错误。它不是真正定义和依赖于实现的。您可以在此处阅读有关未定义行为的更多信息-http: //blog.llvm.org/2011/05/what-every-c-programmer-should-know.html