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...
}
}