C6200

警告 C6200:索引 <name> 超出了 <min> 至 <max> 的范围,即非堆栈缓冲区 <variable> 的有效索引范围

此警告意味着指定数组的整数偏移量超出了该数组的最大界限。此缺陷可能导致随机行为或系统崩溃。

产生此缺陷的一个常见原因是,将数组的大小用作数组的索引。因为 C/C++ 数组索引从零开始,所以,数组的最大合法索引比数组元素的数目小一。

示例

在下面的代码中,因为 for 循环超出了索引范围,所以会生成此警告:

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