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