Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/02/2014, 20:48
Aemilius
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Liberar toda la memoria

Aún si el programa está correctamente hecho y libera toda la memoria que reservó tienes que tener en cuenta que existe un "costo administrativo" por utilizar new/delete o malloc/free.

Existe todo un sistema bastante complejo que permite reservar y liberar memoria dinámicamente y que está enmascarado por esas funciones, además de tener que lidiar con otros problemas como sincronización de hilos y reducir fragmentación interna y externa.

Generalmente el manejador de memoria no pide al sistema operativo un bloque de memoria cada vez que llamas a malloc o a new, generalmente reserva un bloque grande y luego reparte de ese bloque cada vez que llamas a malloc o a new. Tienes que tener en cuenta que el sistema operativo tiene que atender distintos procesos al mismo tiempo por lo que no es buena idea molestarlo a menudo. Probablemente no toda la memoria es devuelta al sistema operativo porque es más probable que el programa vuelva a utilizar esa memoria a que la deje de utilizar totalmente.