共用方式為


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