/ / c ++ pérdida de memoria y memoria basura - c ++, gestión de memoria, pérdida de memoria

c ++ pérdida de memoria y memoria basura - c ++, gestión de memoria, pérdida de memoria

Puedo ver que si asignamos memoria de forma dinámicaen c ++, pero no lo gestionamos correctamente, podemos tener memoria basura, y básicamente podemos obtener una pérdida de memoria, y está claro por qué sucede esto. Porque si, por ejemplo, tenemos un puntero que apunta a una dirección de memoria, y asignamos este puntero a otro espacio de direcciones antes de liberar la dirección actual, entonces es un problema. Pero lo que no entiendo, es que digamos que tenemos un programa malo que sigue agregando memoria basura, pero ¿cómo es que todo vuelve a la normalidad cuando cerramos el programa? Si, por ejemplo, tenemos una memoria basura que se introdujo con un programa c ++, entonces no hay más puntero apuntando a esa memoria basura, y ¿cómo es que después de cerrar el programa, se libera toda la memoria basura? ¿Cómo sabe el programa cómo limpiar la memoria basura antes de que se cierre el programa?

Respuestas

3 para la respuesta № 1

No hay memoria basura, no es tu programaque asigna y libera memoria. Es el sistema operativo subyacente. Está trabajando en la parte superior de un sistema operativo, utilizando sus servicios. La memoria de montón y la tienda gratuita es solo una abstracción que proporcionan estos servicios (entre otras abstracciones, tales archivos, "yo" soy el único proceso que se ejecuta en esta CPU única ", etc.)


1 para la respuesta № 2

En el sistema operativo Windows, el sistema operativo limpia cualquier memoria asignada por un proceso. Por lo tanto, básicamente descarta el espacio que se le dio a un proceso sin preocuparse por lo que contenía.