Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用execvp后释放malloc创建的内存?_C_Linux_Exec - Fatal编程技术网

如何在使用execvp后释放malloc创建的内存?

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

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


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

你不需要。具体地说,如果在调用
exec()
类型的例程(例如,在您的例子中是
execvp()
)之前在进程中分配内存,则释放与原始可执行文件关联的所有内存。这与流程退出(并释放所有资源)和新流程重新启动的情况类似。

中记录了这一点