次の方法で共有


C6201

警告 C6201: <変数> のバッファー オーバーランです。スタックが割り当てられた可能性があります。インデックス <名前> は、有効なインデックスの範囲 <min> から <max> を超えています。

この警告は、指定されたスタック配列に対する整数オフセットが、その配列の範囲の最大値を超えていることを示します。この問題により、ランダムな動作やクラッシュが発生する場合があります。

この問題の一般的な原因の 1 つは、配列のサイズを配列のインデックスとして使用することです。C/C++ の配列のインデックスは 0 から始まるため、配列のインデックスの正しい最大値は配列の要素数より 1 だけ小さくなります。

使用例

次に示すコードでは、配列のインデックスが有効な範囲を越えているため、この警告が生成されます。

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