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.