C6200
경고 C6200: 인덱스 <name>이(가) 비스택 버퍼 <variable>에 대해 유효한 인덱스 범위 <min> - <max>을(를) 벗어납니다.
이 경고는 지정된 배열에 대한 정수 오프셋이 해당 배열의 최대 범위를 초과한다는 것을 나타냅니다.이 오류로 인해 임의의 동작이나 충돌이 발생할 수 있습니다.
이 오류의 일반적인 원인 중 하나는 배열의 크기를 배열에 대한 인덱스로 사용했기 때문입니다.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...
}
}