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*
?我檢查了上面的參考,但找不到任何有用的東西。
至少對於 glibc,你不應該。來源表明指針指向內部狀態結構的成員,因此您不能直接釋放它。
文件還暗示了這一點:
為了讀取
fstab
文件的全部內容,GNU C 庫包含一組以通常方式設計的三個函式。這裡的“通常”方式類似於
getpwent
:返回值可能指向一個靜態區域,並且可能被後續呼叫
getpwent()
、getpwnam(3)
或覆蓋getpwuid(3)
。(不要將返回的指針傳遞給free(3)
。)此外,glibc 文件專門用於
getfsent
:該函式返回一個指向類型變數的指針
struct fstab
。此變數由所有執行緒共享,因此此函式不是執行緒安全的。如果發生錯誤,getfsent 返回一個NULL
指針。該變數是共享的,這強烈表明您不應該弄亂記憶體管理。
如果要釋放資源,請使用
endfsent()
,這將清除內部狀態。