共用方式為


C6200

警告 C6200: 索引 <name> 超出有效的索引範圍: <min> 到 <max> (此索引範圍屬於非堆疊緩衝區 <variable>)

這個警告表示所指定陣列的整數位移 (Offset) 超出該陣列的最大上限。 這項缺失可能會造成隨機行為或損毀。

這項缺失的其中一個常見原因是使用陣列大小做為陣列的索引。 因為 C/C++ 陣列索引是以零起始,所以陣列的最大合法索引是陣列元素數目減一。

範例

下列程式碼會因為 for 迴圈 (Loop) 超出索引範圍,而產生這個警告:

int buff[14]; // array of 0..13 elements
void f()
{
   for (int i=0; i<=14;i++) // i exceeds the index
   {
     buff[i]= 0; // warning C6200 
     // code...
   }
}

若要更正這兩個警告,請使用正確的陣列大小,如下列程式碼所示:

int buff[14]; // array of 0..13 elements
void f()
{
   for ( int i=0; i < 14; i++) // loop stops when i < 14 
   {
     buff[i]= 0; // initialize buffer
    // code...
   }
}