用 c++ 編寫了一些程序,發現 c++ 不會自動檢查數組的索引越界問題。有時候程序運行錯誤,提示的錯誤信息莫名其妙,但很可能是某個數組越界的問題。
例如:
#include <iostream>int main() {double arr[5] = {1.1, 2.2, 3.3, 4.4, 5.5};// 錯誤:訪問越界std::cout << arr[10] << std::endl;return 0;
}
在 C++ 中,數組不會進行邊界檢查,如果 arr[10] 訪問了未分配的內存,就可能會得到 隨機的、異常大的值,甚至可能導致程序崩潰。
網上查看的一些檢查數組越界的方法似乎不太好用,感覺調試時只能慢慢用 try catch 語句發現到底是哪個數組越界了。