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