Udostępnij za pośrednictwem


C6283

Ostrzeżenie C6283: <variable> jest przydzielana za pomocą tablicowego operatora new [], ale usuwana za pomocą usuwania skalarnego

Ostrzeżenie to pojawia się tylko w przypadku kodu C++ i wskazuje, że wywołująca funkcja niespójnie przydzieliła pamięć tablicowym operatorem new [], ale zwolniła go skalarnym operatorem delete.Ta wada może powodować przecieki, uszkodzenia pamięci i, w wypadkach, gdy operatory zostały nadpisane, awarie.Jeśli pamięć została przydzielona z tablicą new [], zazwyczaj powinna zostać uwolniona z tablicą delete[].

Przykład

Poniższy kod generuje to ostrzeżenie:

void f( )
{
  char *str = new char[50];
  // code ...
  delete str;
}

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

void f( )
{
  char *str = new char[50];
  // code ...
  delete[] str;
}

Ostrzeżenie C6283 dotyczy tylko tablic prymitywnych typów, takich jak liczby czy znaki.Jeśli elementy tablicy są obiektami typu klasy, wydawane jest ostrzeżenie C6278.