在C++中訪問陣列越界時為何不會產生任何錯誤?
這是因為C++不進行邊界檢查。Java和python等語言有邊界檢查,所以如果你嘗試訪問越界元素,它們會丟擲錯誤。C++的設計原則是它不應該比等效的C程式碼慢,而C不進行陣列邊界檢查。
因此如果你嘗試訪問越界的記憶體,你的程式的行為是未定義的,正如C++標準中所述。一般來說,每當你遇到未定義的行為時,任何事情都可能發生。應用程式可能會崩潰,可能會凍結,可能會執行正常(或至少看起來執行正常),可能會干擾其他應用程式(在現代作業系統上不太可能),等等。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP