readdir
返回一个指向struct dirent
的指针,我已经测试了两个不同指针中存储的对readdir
的两次调用是否修改了第一个指针内容,它没有。< / p>
所以我猜readdir会分配一些内存,我是对的吗?
如果是这样,它应该被释放,这是我以前从未做过的......
答案 0 :(得分:1)
POSIX表示应用程序不得修改readdir()
返回的结构:
申请不得修改退货的结构 readdir()的值,也不是指向的任何存储区域 结构中的指针。返回的指针和指针 在结构内,可能是无效的或结构或 后续调用readdir()可能会覆盖存储区域 在同一目录流上。他们不应受到打电话的影响 readdir()在不同的目录流上。
因此,无论是内部分配内存还是使用静态缓冲区,都取决于特定实现的实现方式。您需要做的就是尊重该功能所需的合同。也就是说,您不能尝试修改它并调用closedir()
来关闭目录流。
答案 1 :(得分:0)
如果它确实分配了任何内存,那么对closedir(http://linux.die.net/man/3/closedir)的调用将为你释放
答案 2 :(得分:0)
closedir
之后的目录上调用readdir
,就像在fclose
之后为常规文件调用fopen
一样。