En CP/M, no era una cuestión de liberar memoria tanto, ya que tenía un área estática de RAM para su programa, y cada programa se ejecutaba en el mismo espacio. Entonces, cuando Program A se cerró, y Program B ejecutó, B simplemente se cargó encima de A.
Ahora había mecanismos para reservar memoria lejos del SO, pero esto no era típicamente memoria de montón (en el clásico caso de que lo consideremos hoy), fue diseño de áreas reservadas especiales para diversas tareas.
Por ejemplo, DOS tenía esta rutina de salida llamada "Residir y permanecer residente". Esto "cerró" el programa, pero no lanzó el espacio después de que el programa se cerró. Normalmente, estos programas cargan vectores de interrupción (como interrupciones de teclado) para desencadenar rutinas. Borland Sidekick era un "TSR" muy popular en su época y ofrecía cosas como una calculadora y una lista de contactos.
Finalmente, dado que estos no eran sistemas de memoria protegidos, sus programas podrían abusar del sistema en todo tipo de formas de hacer lo que usted desea, pero esa es una discusión diferente.
En Windows hay un problema similar: archivos temporales. La mayoría de los programas que necesitan memoria adicional para sus operaciones (y se ejecutan en computadoras que podrían no tener suficiente memoria) usan archivos temporales. Dado lo fácil que es para un programa fallar, o ser terminado por el usuario, los archivos temporales no se están limpiando. – rwong