gpt4 book ai didi

c - 调用 execv() 时动态分配的内存会发生什么?

转载 作者:IT王子 更新时间:2023-10-29 00:20:39 24 4
gpt4 key购买 nike

我正在编写一个简单的 shell 作为 OS 类(class)作业,我需要在 PATH 中搜索以找到用户输入的程序,一旦找到正确的目录,我就会分配一 block 内存来容纳该目录名称加上程序名称,我将它作为第一个参数传递给 execv()。

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

这可能不是很多内存,但我只是好奇。

最佳答案

当您exec() 时,整个过程 (a) 结束,因此包括动态内存和一些 fd 在内的所有资源都被操作系统回收,并且 (b) 被替换:代码、数据、线程……

重新文件描述符,来自“man execve”:

File descriptors open in the calling process image remain open in the new process image, except for those for which the close-on-exec flag is set (see close(2) and fcntl(2)). Descriptors that remain open are unaffected by execve().

关于c - 调用 execv() 时动态分配的内存会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com