在 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

更新于: 24-6 月-2020

383 浏览

开启你的 职业生涯

完成课程获得认证

开始
广告