11/02/2014, 20:48
|
| | Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 13 años, 11 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. |