如果在C中的opendir()之后没有完成closedir()怎么办?

时间:2018-04-23 17:48:49

标签: c

我想了解如果我们在执行closedir()后没有opendir()会发生什么,如果我们继续opendir()会怎么样?

我试图在我的c程序中连续opendir(),但似乎什么都没有影响,当我这样做时内部是否会有任何内存泄漏?

编辑:

我知道我们确实需要做closedir(),但内心想要了解会发生什么?

1 个答案:

答案 0 :(得分:3)

如果这样做会导致资源泄漏,这可能是进程内存空间中的内存泄漏,并且在整个系统中肯定是一种内存泄漏(直到进程的生命周期结束,在这种情况下)它持有的资源已经关闭)。在某些时候,您将超过打开文件描述符或管理打开目录所需的其他资源的每进程或系统范围限制,并且进一步尝试打开目录(以及可能的文件)将失败,直到您关闭某些目录。

这是一个固有的限制,而不是一个人为限制,因为每个打开的目录句柄都带有一些状态:它与哪个目录相关联,迭代器的当前位置是什么,等等。保持状态固有地消耗某种类型的内存