Aracılığıyla paylaş


C6201

C6201 Uyarı: arabellek tahsis, büyük olasılıkla yığın taşması için <variable>: dizin <name> <min> geçerli dizini aralık dışında <max>

Bu uyarı, belirtilen yığın dizi içine bir tamsayı uzaklık Bu diziyi maksimum sınırları aşıyor gösterir.Bu hata, rasgele davranış veya kilitlenmelere neden olabilir.

Yaygın bir nedeni bu hata, bir dizinin boyutunu diziye dizin olarak kullanıyor.c/C++ dizi dizinlemesi sıfır tabanlı olduğundan, en büyük yasal bir dizi içine bir dizindir, dizi öğelerinin sayısından daha az.

Örnek

Dizi dizini, geçerli aralık dışında olduğundan aşağıdaki kod bu uyarı oluşturur:

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

Her iki uyarı düzeltmek için doğru dizi boyutu aşağıdaki kodda gösterildiği gibi kullanın:

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