下標越界

只能在定義的範圍內訪問數組元素和集合成員。此錯誤有以下的原因和解決方法。

基本介紹

  • 中文名下標越界
  • 套用學科:嵌入式
  • 適用領域範圍:數組
  • 適用領域範圍:錯誤的代碼
簡介,VB中的數組越界,C++中的下標越界,

簡介

只能在定義的範圍內訪問數組元素和集合成員。此錯誤有以下的原因和解決方法。

VB中的數組越界

引用了不存在的數組元素.
下標可能比下標範圍大或小,或是在應用程式中這一邊的數組沒有指定範圍。檢查數組的聲明以確認其上界和下界。若使用的是重新指定範圍的數組,應使用 UBound 和 LBound 函式來決定數組訪問。如果索引指定為變數,應檢查變數名的拼寫。
聲明數組時沒有指定元素的數目。例如,下列的代碼就會導致此錯誤:
Dim MyArray() As Integer
MyArray(8) = 234 ' 導致錯誤 9。
Visual Basic 並不會將沒有指定範圍的數組自動設為 0 – 10。相反必須使用 Dim 或 ReDim 來指定數組中元素的數目。
引用了不存在的集合成員。
試著使用 For Each...Next 結構代替指定元素下標。
使用速寫形式的下標,結果指定了錯誤的元素。
例如,當在集合上使用 ! 運運算元時,! 自動指定了一個鍵。例如 object!keyname.value 和 object.item(keyname).value 是一樣的。在此例中,集合中如果 keyname 表示一個錯誤鍵,錯誤就會產生。若要改進此錯誤,在集合對象中使用正確的鍵名稱或索引。
詳細信息,可選取有問題的項目,並按下 F1 鍵。

C++中的下標越界

試圖訪問數組中不存在的元素,使用標準庫vector模板和string類的at函式可以提供下標檢查,如果越界則拋出異常.
靜態數組動態數組都可能造成越界.
如:
int A[20];
cout<<A[-1];//A[-1]不存在
cout<<A[20];//A[20]也不存在,C++中,數組下標的最大值比數組大小小1.int *B;
下標越界
B=new int[20];//如果new操作失敗,或者沒有這一句,對B數組的訪問都會失敗.平台不同,造成的後果不一定相同.

相關詞條

熱門詞條

聯絡我們