Sdílet prostřednictvím


C6201

upozornění C6201: přetečení vyrovnávací paměti pro <variable>, které případně zásobníku přiděleno: index <name> je mimo rozsah platný index <min> k <max>

Toto upozornění znamená, že odsazení celé číslo do pole určeného zásobníku překračuje maximální hranice daného pole.Tato vada může způsobit náhodné chování nebo selhání.

Jednou z běžných příčin této vady je velikost pole, použití jako index do pole.Indexování pole C/C++ je od nuly, maximální právní index do pole je menší než počet prvků pole.

Příklad

Následující kód vygeneruje toto varování, protože index pole je mimo platný rozsah:

void f( )
{
  int buff[25];
  for (int i=0; i <= 25; i++) // i exceeds array bound
  {
    buff[i]=0; // initialize i
    // code ...
  }
}

Obě varování opravit, použijte velikost správné pole jak je ukázáno v následujícím kódu:

void f( )
{
  int buff[25];
  for (int i=0; i < 25; i++)
  {
    buff[i]=0; // initialize i
    // code ...
  }
}