#include <fstab.h>
struct fstab *getfsent(void);
http://man7.org/linux/man-pages/man3/getfsent.3.html
getfsent
ファイルから1行を読み込み、/etc/fstab
型の変数を返しますstruct fstab*
。必ず解放すべきですか?それとも他人が管理しているのですか?他の人が管理している場合、戻り型ではないのはなぜですかconst struct fstab*
?上記の参照を確認しましたが、役に立つものが見つかりませんでした。
答え1
少なくともglibcではこれをしてはいけません。これ源泉このポインターが内部状態構造のメンバーを指しているため、直接解放できないことを示します。
これ文書これは以下でも暗示されます。
ファイルの内容全体を読み取るために、
fstab
GNU Cライブラリには一般的な方法で設計された3つの関数のセットが含まれています。
ここで「一般的な」方法は次のとおりです。getpwent
:
戻り値は静的領域を指すことができ、後続の呼び出しで呼び出されるか
getpwent()
上書きgetpwnam(3)
できますgetpwuid(3)
。 (返されたポインタをに渡さないでくださいfree(3)
。)
また、glibc のドキュメントでは、以下を具体的に取り扱っていますgetfsent
。
この関数は型変数へのポインタを返します
struct fstab
。この変数はすべてのスレッドで共有されるため、関数はスレッドセーフではありません。エラーが発生すると、getfsentはNULL
ポインタを返します。
変数は共有されます。これはメモリ管理を台無しにしてはならないという強力なマーキングです。
リソースを解放するには、を使用してくださいendfsent()
。これにより内部状態が消去されます。