Sé que cuando llamo a una de las llamadas al sistema exec()
en Linux, reemplazará el proceso en ejecución con una nueva imagen. Entonces cuando doblo un nuevo proceso y ejecuto exec()
, el niño será reemplazado con el nuevo proceso.¿Qué sucede con la memoria malloc'ed después de que exec() cambie la imagen del programa?
¿Qué sucede con cualquier memoria que he asignado del montón? Supongamos que quiero analizar un número arbitrario de comandos y enviarlo al exec()
. Para mantener este número arbitrario, probablemente tendré que asignar memoria en algún momento dado que no creo poder hacerlo correctamente con arreglos de tamaño estático, así que probablemente use malloc()
o algo equivalente.
Necesito mantener esta memoria asignada hasta después de haber llamado al exec()
, pero exec()
nunca regresa.
¿La memoria es recuperada por el sistema operativo?
Por cierto, aquí hay una pregunta muy similar http://stackoverflow.com/questions/3617332/what-happens-with-memory-usage-after-exec – sharptooth