Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的 C 程序中,我创建了一个子进程,并在其中解析一个字符串并创建一个指针数组(使用malloc()),以便在execvp()命令中传递它。
malloc()
execvp()
但问题是,如何释放孩子创造的记忆?execvp()运行新任务,可能会也可能不会返回。如果它没有返回,那么它是成功的并且孩子死了(我不能真正使用该free()命令)。如果失败则返回,然后继续执行下一行代码,这是释放内存的唯一机会吗?
free()
你不需要。具体来说,如果您在调用exec()-type 例程(例如,execvp()在您的情况下)之前在进程中分配内存,则与原始可执行文件关联的所有内存都将被释放。这与一个进程退出(并释放其所有资源)和一个新进程以全新状态启动的情况类似。
exec()