如果我已经定义并打开了一个我决定调用的文件f
,那么简单地说f = NULL
而不是正确关闭文件会带来fclose()
什么后果?
或者f = NULL
甚至没有工作?
而不是一个垃圾收集器(如语言python
),设置文件指针NULL
刚刚丢失的文件句柄的引用,但它并没有关闭该文件.
这导致潜在的错误,如缓冲区未刷新,锁定文件,达到"每个进程太多打开文件"限制...取决于您打开的模式和平台.
在支持资源跟踪的"现代"系统上,文件在退出时仍然关闭(仍然可能会丢失一些缓冲区),但是一些遗留系统将保持文件打开,直到您重新启动(如果您的代码是某个更大工具的插件,在更大的工具关闭之前,资源跟踪不适用)
这被认为是一种好的做法,就是NULL
在关闭文件后设置句柄,这样就没有fclose
再次调用已关闭文件的风险(它降低了风险,但可能有句柄的副本,所以它不是100%安全):
if (f!=NULL)
{
fclose(f);
f = NULL;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58 次 |
最近记录: |