我知道在Linux中调用exec()
系统调用时,它将使用新的程序替换当前正在运行的进程。因此,当我复制一个新进程并运行exec()
时,子进程将被新进程替换。
那么我从堆上分配的内存会发生什么?比如说,我想解析任意数量的命令并将其发送到exec()
中。为了容纳这种任意数量的命令,我可能需要在某个时刻分配内存,因为我不认为我可以使用静态大小数组正确地完成这个任务,所以我很可能会使用malloc()
或类似的函数。
我需要保持这些内存的分配直到执行完exec()
之后,但是exec()
永远不会返回。
操作系统会回收这些内存吗?