En muchos libros y tutoriales, escuché que la práctica del manejo de la memoria estaba estresada y sentí que sucederían cosas misteriosas y terribles si no liberaba la memoria una vez que hubiera terminado de usarla.
No puedo hablar por otros sistemas (aunque para mí es razonable suponer que adoptan una práctica similar), pero al menos en Windows, el Kernel está básicamente garantizado para limpiar la mayoría de los recursos (con la excepción de unos pocos ) utilizado por un programa después de la terminación del programa. Que incluye memoria de pila, entre varias otras cosas.
Entiendo por qué querría cerrar un archivo después de que haya terminado de usarlo para ponerlo a disposición del usuario o por qué querría desconectar un zócalo conectado a un servidor para ahorrar ancho de banda, pero Parece tonto tener que microgestionar TODA la memoria utilizada por tu programa.
Ahora, estoy de acuerdo en que esta pregunta es amplia, ya que la forma en que debe manejar su memoria se basa en la cantidad de memoria que necesita y cuándo la necesita, por lo que limitaré el alcance de esta pregunta a esto: Si ¿Necesito usar un pedazo de memoria durante toda la vida útil de mi programa? ¿Es realmente necesario liberarlo justo antes de que termine el programa?
Editar: La pregunta sugerida como duplicado era específica de la familia de sistemas operativos Unix. Su respuesta principal incluso especificó una herramienta específica para Linux (por ejemplo, Valgrind). El objetivo de esta pregunta es cubrir la mayoría de los sistemas operativos no incorporados "normales" y por qué es o no es una buena práctica liberar memoria que se necesita durante toda la vida útil de un programa.