Creo que todos entendemos la necesidad de eliminar al reasignar un puntero asignado dinámicamente para evitar fugas de memoria. Sin embargo, tengo curiosidad, ¿hasta qué punto el C++ ordena el uso de eliminar? Por ejemplo, tomemos el siguiente programa¿Siempre nuevo debe ir seguido de eliminar?
int main()
{
int* arr = new int[5];
return 0;
}
Mientras que para todos los efectos, no hay fuga se produce aquí (ya que el programa está llegando a su fin y el sistema operativo va a limpiar toda la memoria una vez que se devuelve), pero lo hace la norma todavía requieren - - o recomendar - el uso de eliminar [] en este caso? Si no, ¿habría alguna otra razón por la que eliminaría [] aquí?
De hecho, me refiero a que a menudo estoy tipeando instrucciones delete [] justo antes de regresar, aunque sabía (a nivel práctico) que no importaba. Y ese tampoco es un hábito que estoy tratando de detener, solo me interesaba el grado en que el estándar lo recomendaba. – GRB