繁体   English   中英

C readdir和struct Dirent分配

[英]C readdir & struct dirent allocation

readdir返回一个指向struct dirent的指针,我已经测试了存储在两个不同指针中的两次对readdir调用是否会修改第一个指针的内容,但不会。

所以我想readdir分配了一些内存,对吗?

如果是这样,应该发布它,这是我以前从未做过的事情...

POSIX表示应用程序不得修改readdir()返回的结构:

应用程序不得修改readdir()的返回值所指向的结构,也不得修改该结构内的指针所指向的任何存储区域。 返回的指针以及结构中的指针可能无效,或者结构或存储区域可能被后续对同一目录流上的readdir()的调用所覆盖。 它们不应受到在不同目录流上调用readdir()的影响。

因此,它是在内部分配内存还是使用静态缓冲区取决于特定实现的实现方式。 您需要做的就是尊重功能要求的合同。 也就是说,您一定不要尝试对其进行修改并调用closedir()关闭目录流。

如果确实分配了任何内存,则调用closedir( http://linux.die.net/man/3/closedir )将为您释放它

是的,应该将其释放。 您应该在readdir之后的目录上调用closedir ,就像在常规文件的fopen之后调用fclose一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM