如何在使用execvp后释放malloc创建的内存?
在我的C程序中,我创建了一个子进程,在其中,它解析一个字符串并创建了一个指针数组(使用如何在使用execvp后释放malloc创建的内存?,c,linux,exec,C,Linux,Exec,在我的C程序中,我创建了一个子进程,在其中,它解析一个字符串并创建了一个指针数组(使用malloc()),以便在execvp()命令中传递它 但问题是,如何释放孩子创建的内存execvp()运行新任务,可能返回,也可能不返回。如果它没有返回,那么它就成功了,孩子也死了(我不能真正使用free()命令)。如果失败,然后返回,然后继续执行下一行代码,这是释放内存的唯一机会吗 你不需要。具体地说,如果在调用exec()类型的例程(例如,在您的例子中是execvp())之前在进程中分配内存,则释放与原始
malloc()
),以便在execvp()
命令中传递它
但问题是,如何释放孩子创建的内存
execvp()
运行新任务,可能返回,也可能不返回。如果它没有返回,那么它就成功了,孩子也死了(我不能真正使用free()
命令)。如果失败,然后返回,然后继续执行下一行代码,这是释放内存的唯一机会吗 你不需要。具体地说,如果在调用exec()
类型的例程(例如,在您的例子中是execvp()
)之前在进程中分配内存,则释放与原始可执行文件关联的所有内存。这与流程退出(并释放所有资源)和新流程重新启动的情况类似。中记录了这一点