关于readdir和stat两个函数的疑问
当我们使用readdir时一般会定义一个DIR*和dirent*,一个相当于文件描述符,另一个用来读取目录结构体内容
像这样
DIR*pDIR=opendir(....);
struct dirent*pSD;
while((pSD=readdir(pDIR)!=NULL)....
...
closedir(pDIR);
当我们使用stat时一般会定义一个stat结构体
struct stat sb;
if(stat(...,&sb)!=0)...;
发现dirent结构体的内存不是自己申请的,也不需要释放
/*
On success, readdir() returns a pointer to a dirent structure. (This
structure may be statically allocated; do not attempt to free(3) it.)
*/
而stat结构体是需要自己分配结构体空间的,像这样的结构体unix接口里还有很多,而且大部分用指针以便带回返回值。
有没有一种特定习惯能区分哪些需要自己分配空间,哪些是系统分配?
(比如系统分配的都需要调用close*???)
------解决方案--------------------
很抱歉没有,不过若是系统分配的,基本都要注意是否是线程安全的。
------解决方案--------------------目前还没发现什么规律。