簡體   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