C6200
警告 C6200: インデックス <名前> は、有効なインデックスの範囲 <min> から <max> (スタックでないバッファー <変数>) を超えています。
この警告は、指定の配列への整数オフセットが配列の最大境界を超えていることを示します。この問題により、ランダムな動作やクラッシュが発生する場合があります。
この問題の一般的な原因の 1 つは、配列のサイズを配列のインデックスとして使用することです。C/C++ の配列のインデックスは 0 から始まるため、配列のインデックスの正しい最大値は配列の要素数より 1 だけ小さくなります。
使用例
次のコードでは、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...
}
}