C6201

警告 C6201:<variable> 中缓冲区溢出,该缓冲区可能是在堆栈中分配的: 索引 <name> 超出了 <min> 至 <max> 的有效索引范围

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

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

示例

在下面的代码中,因为数组索引超出了有效范围,所有会生成此警告:

void f( )
{
  int buff[25];
  for (int i=0; i <= 25; i++) // i exceeds array bound
  {
    buff[i]=0; // initialize i
    // code ...
  }
}

若要更正此警告,请使用正确的数组大小,如下面的代码所示:

void f( )
{
  int buff[25];
  for (int i=0; i < 25; i++)
  {
    buff[i]=0; // initialize i
    // code ...
  }
}