I know that when I call one of the exec()
system calls in Linux that it will replace the currently running process with a new image. So when I fork a new process and run exec()
, the child will be replaced with the new process.
What happens to any memory I've allocated from the heap? Say I want to parse an arbitrary number of commands and send it into exec()
. To hold this arbitrary number, I'll likely have to allocate memory at some point since I don't think I can do it correctly with static sized arrays, so I'll likely use malloc()
or something equivalent.
I need to keep this memory allocated until after I've called exec()
, but exec()
never returns.
Does the memory get reclaimed by the operating system?
See Question&Answers more detail:os