#include <stdio.h>
#include <string.h>
FILE * BestTry();
int main()
{
char arr[] = "hello";
FILE * desc = BestTry();
fwrite(arr,1,5,desc);
fclose(desc);
}
FILE * BestTry()
{
FILE * retDesc = fopen(".\\hello.dat","w+");
return retDesc;
}
将 desc
用于任何用途是否安全,因为我正在将内存分配给函数 BestTry
中的局部变量。如果安全那么原因是什么?
最佳答案
FILE
对象不在您的BestTry
函数中。该函数获取指向 FILE
对象的指针,该指针确实是本地的,但对象本身不是。
您所做的很好,当您返回指针时,实际的 FILE
对象仍然存在。 (很好,除非您不检查系统调用的返回值,因此当程序失败时您将很难调试它。)
关于c - 返回从 C 中的另一个函数本地分配的文件文件描述符是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18169550/