段錯誤實際是 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

更新於:2020 年 6 月 24 日

383 次瀏覽

開啟你 職業生涯

透過完成課程獲得認證

開始
廣告