C6201
警告 C6201: 可能為堆疊配置的緩衝區 <variable> 發生緩衝區滿溢: 索引 <name> 超出有效的索引範圍: <min> 到 <max>
這個警告表示所指定堆疊陣列的整數位移 (Offset) 超出該陣列的最大上限。 這項缺失可能會造成隨機行為或損毀。
這項缺失的其中一個常見原因是使用陣列大小做為陣列的索引。 因為 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 ...
}
}