Fstab

我應該釋放 getfsent 返回的 fstab 指針嗎?

  • August 13, 2018
#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*?我檢查了上面的參考,但找不到任何有用的東西。

至少對於 glibc,你不應該。來源表明指針指向內部狀態結構的成員,因此您不能直接釋放它。

文件還暗示了這一點:

為了讀取fstab文件的全部內容,GNU C 庫包含一組以通常方式設計的三個函式。

這裡的“通常”方式類似於getpwent

返回值可能指向一個靜態區域,並且可能被後續呼叫getpwent()getpwnam(3)或覆蓋getpwuid(3)。(不要將返回的指針傳遞給free(3)。)

此外,glibc 文件專門用於getfsent

該函式返回一個指向類型變數的指針struct fstab。此變數由所有執行緒共享,因此此函式不是執行緒安全的。如果發生錯誤,getfsent 返回一個NULL 指針。

該變數是共享的,這強烈表明您不應該弄亂記憶體管理。

如果要釋放資源,請使用endfsent(),這將清除內部狀態。

引用自:https://unix.stackexchange.com/questions/462251