Condividi tramite


C6283

avviso C6283: <variabile> è stato allocato con l'operatore di matrice new [], ma eliminato con l'operatore scalare delete

Questo avviso viene visualizzato solo nel codice C++ e indica che nella funzione chiamante la memoria è stata allocata in maniera incoerente con l'operatore di matrice new [], ma è stata liberata con l'operatore scalare delete. Questo errore potrebbe causare perdite, danneggiamenti della memoria e, in situazioni in cui è stato eseguito l'override degli operatori, arresti anomali del sistema. Se è stata allocata con l'operatore di matrice new [], la memoria dovrebbe essere liberata con l'operatore di matrice delete[].

Esempio

Il codice seguente genera questo avviso:

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

Per risolvere il problema, utilizzare il codice seguente:

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

L'avviso C6283 si applica solo a matrici di tipi primitivi quali Integer o char. Se gli elementi della matrice sono oggetti di tipo classe, viene generato l'avviso C6278.