gpt4 book ai didi

file - 如果不执行fclose()退出程序会怎样?

转载 作者:行者123 更新时间:2023-12-04 03:40:16 26 4
gpt4 key购买 nike

问题:

如果我退出程序但没有关闭文件怎么办?

是否发生了一些不好的事情(例如,某些操作系统级别的文件描述符数组未释放..?)

两种情况下的答案都相同

  • 已编程退出
  • 意外崩溃

  • 代码示例:

    随着程序退出,我的意思是这样的:
    int main(){
    fopen("foo.txt","r");
    exit(1);
    }

    对于意外崩溃,我的意思是这样的:
    int main(){
    int * ptr=NULL;
    fopen("foo.txt","r");
    ptr[0]=0; // causes segmentation fault to occur
    }

    P.S.

    如果答案取决于编程语言,那么我想了解C和C++。

    如果答案取决于操作系统,那么我会对Linux和Windows的行为感兴趣。

    最佳答案

    这取决于您如何退出。在受控的情况下(通过 exit() 或从main()返回),将刷新(输出)缓冲区中的数据,并按有序方式关闭文件。该过程所拥有的其他资源也将被释放。

    如果您的程序崩溃失控,或者它调用了另一种 _exit() or _Exit() 函数,则系统仍将清理(关闭)打开的文件描述符并释放其他资源,但不会刷新缓冲区等。

    关于file - 如果不执行fclose()退出程序会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370363/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com