c - 返回从 C 中的另一个函数本地分配的文件文件描述符是否安全

标签 c

#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/

相关文章:

c - C中的按位运算符下面的概念是什么?它优化了我的代码并大大减少了运行时间

c - 我有一个关于 C 中稀疏矩阵乘法代码的问题

c# - 如何使用 pinvoke 编码另一个传递给 C DLL 的结构

c - 最有效的动态排序方法

c - fork多线程进程,为线程分配内存

c - C语言手动排序链表

在 C 中创建一个函数

c - C 中的 Malloc 内存损坏

C - 程序在没有扫描的情况下终止?

c - 如何将无符号 24 位 int 转换为有符号 int 并将符号扩展为 32 位?