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

c++server side programmingprogramming

未定义行为是一种赋予实现者(例如编译器或操作系统)和计算机自由执行其"想要"的任何事情(换句话说,不考虑后果)的方式。

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

#include<iostream>
int main() {
    int arr[2];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 2; // 未定义行为
    arr[3] = 3; // 未定义行为
}

此代码可能运行正常,也可能出现段错误。它实际上并未定义,且依赖于具体实现。您可以在此处了解更多关于未定义行为的信息 − http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html


相关文章