我应该释放 getfsent 返回的 fstab 指针吗?

我应该释放 getfsent 返回的 fstab 指针吗?
#include <fstab.h>

struct fstab *getfsent(void);

http://man7.org/linux/man-pages/man3/getfsent.3.html

getfsent从文件中读取一行/etc/fstab并返回类型为 的变量struct fstab*。我需要释放它吗?还是由别人管理的?如果它是由其他人管理的,为什么返回类型不是const struct fstab*?我检查了上面的参考资料,但找不到任何有用的东西。

答案1

至少对于 glibc 来说,你不应该这样做。这来源表示该指针指向内部状态结构的成员,因此它不是您可以直接释放的东西。

文档也暗示了这一点:

为了读取文件的全部内容,fstabGNU C 库包含一组以通常方式设计的三个函数。

这里的“通常”方式是这样的getpwent:

返回值可能指向静态区域,并且可能会被后续调用getpwent()getpwnam(3)或覆盖getpwuid(3)。 (不要将返回的指针传递给free(3)。)

另外,glibc 文档专门针对getfsent

该函数返回一个指向 类型变量的指针struct fstab。该变量由所有线程共享,因此该函数不是线程安全的。如果发生错误,getfsent 返回一个NULL 指针。

该变量是共享的,这强烈表明您不应该搞乱内存管理。

如果您想释放资源,请使用endfsent(),这将清除内部状态。

相关内容