在 C++ 中段錯誤是否實際上是未定義的行為?


未定義的行為是一種為實現者(如編譯器或作業系統)和計算機提供自由來做他們“想要的”任何事情,換句話來說,就是不關心後果的方法。

段錯誤的情況本質上是瞬態的。它們不會總是導致段錯誤,但也可以正確執行(或至少看起來是如此)。例如,考慮以下程式碼片段 -

#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

更新於: 24-6 月-2020

383 瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.