调用execv()时dynamic分配内存会发生什么?

我正在编写一个简单的shell作为一个操作系统课程的任务,我需要在PATH中search,以find程序用户input,一旦我find正确的目录,我malloc一块内存只是足以容纳目录名加上程序名,我把它作为第一个parameter passing给execv()。

我可以静态分配100个左右的字符,但有一个限制让我感到不舒服。 所以当execv()执行时,堆是被清理还是丢失了那块内存?

这可能不是很多的记忆,但我只是好奇。

Solutions Collecting From Web of "调用execv()时dynamic分配内存会发生什么?"

当你exec() ,整个过程是(一)结束,所有的资源,包括动态内存和下面的一些FD,被操作系统回收,(二)取代:代码,数据,线程,…

重新文件描述符,从"man execve"

调用过程中打开的文件描述符在新的过程映像中保持打开状态,除了那些为其设置close-on-exec标志(请参阅close(2)和fcntl(2))的文件描述符。 保持打开的描述符不受execve()的影响。