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