7

在我的 C 程序中,我创建了一个子进程,并在其中解析一个字符串并创建一个指针数组(使用malloc()),以便在execvp()命令中传递它。

但问题是,如何释放孩子创造的记忆?execvp()运行新任务,可能会也可能不会返回。如果它没有返回,那么它是成功的并且孩子死了(我不能真正使用该free()命令)。如果失败则返回,然后继续执行下一行代码,这是释放内存的唯一机会吗?

4

1 回答 1

11

你不需要。具体来说,如果您在调用exec()-type 例程(例如,execvp()在您的情况下)之前在进程中分配内存,则与原始可执行文件关联的所有内存都将被释放。这与一个进程退出(并释放其所有资源)和一个新进程以全新状态启动的情况类似。

于 2013-01-24T03:30:36.843 回答