C++ 删除前是否应关闭文件?

C++ 删除前是否应关闭文件?,c++,file,filesystems,delete-file,fclose,C++,File,Filesystems,Delete File,Fclose,我有一个文件指针,我想在数据结构中加载文件内容后删除该文件。我不确定在删除之前是否应该关闭该文件。代码的哪一部分是正确的 FILE* myFile = fopen("abc.bin", "rb"); /* Code to load contents of file and do some operations */ fclose(myFile); remove("abc.bin"); 或 或者使用它们中的任何一个都可以吗?这取决于操作系统 例如,在Windows上,文件不会被删除: 如果文件当

我有一个文件指针,我想在数据结构中加载文件内容后删除该文件。我不确定在删除之前是否应该关闭该文件。代码的哪一部分是正确的

FILE* myFile = fopen("abc.bin", "rb");
/* Code to load contents of file and do some operations */
fclose(myFile);
remove("abc.bin");


或者使用它们中的任何一个都可以吗?

这取决于操作系统

例如,在Windows上,文件不会被删除:

如果文件当前由当前进程或其他进程打开,此函数的行为由实现定义(特别是,POSIX系统取消了文件名的链接,尽管在最后一个运行的进程关闭文件之前,即使这是文件的最后一个硬链接,也不会回收文件系统空间,但Windows不允许删除该文件)


rename!=remove中找到更多详细信息。这取决于操作系统。另外,请不要使用多个语言标记,只使用您真正使用的语言标记。这部分取决于o/s。最好先关闭文件,但在Unix/Linux系统上,如果打开,则不会出现问题。Windows可能更麻烦。我不这么认为ee在不关闭文件的情况下删除文件有什么好处?即使可以这样做,您将获得什么?经验法则:先关闭,然后删除。
FILE* myFile = fopen("abc.bin", "rb");
/* Code to load contents of file and do some operations */
remove("abc.bin")
fclose(myFile);