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


未定义的行为是一种给实现者(例如,编译器或操作系统)以及计算机充分自由去做“想”做的任何事情的方法,换句话说,就是不关心后果。

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

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

此代码可能会正确运行或导致段错误。它并非真正定义,并且依赖于实现。你可以在此处阅读更多关于未定义行为的内容——https://blog.llvm.net.cn/2011/05/what-every-c-programmer-should-know.html

更新于:2020 年 6 月 24 日

383 次浏览

开启你 职业生涯

通过完成课程获得认证

开始
广告