Penso che tutti comprendiamo la necessità di eliminare quando si riassegna un puntatore ad allocazione dinamica per evitare perdite di memoria. Tuttavia, sono curioso, fino a che punto il C++ impone l'uso di delete? Per esempio, prendete il seguente programmaIl nuovo deve essere sempre seguito da eliminare?
int main()
{
int* arr = new int[5];
return 0;
}
Mentre per tutti gli effetti senza perdite si verifica qui (dal momento che il programma sta finendo e il sistema operativo ripulire tutta la memoria una volta che ritorna), ma fa lo standard ancora bisogno - - o consiglia - l'uso di delete [] in questo caso? In caso contrario, ci sarebbe un altro motivo per cui dovresti eliminare [] qui?
In effetti, voglio dire che mi ritrovo spesso a digitare le istruzioni delete [] proprio prima del ritorno, anche se sapevo (a livello pratico) che non faceva differenza. E non è un'abitudine che sto cercando di fermare - ero solo interessato alla misura in cui lo standard lo raccomandava. – GRB