假设我有以下程序:fclose()然后free()?
#include <stdio.h>
int main() {
FILE * pFile;
pFile = fopen ("myfile.txt","r");
fclose (pFile);
//This never happens: free(pFile)
return 0;
}
我从来没有见过一个程序关闭文件句柄后做free(pFile)
。这是为什么?
我知道因为fclose()
没有收到指向pFile
的指针,所以它实际上并没有释放指针的内存。我的印象是指针如果指向动态分配的内存,指针总是应该释放内存。为什么没有人free()
的文件指针?
“为什么没有人'free()'文件指针?” - 因为这显然是错误的。 –
'free()'不会收到一个指向它的参数的指针。 –
首先,您不希望在文件描述符表(FILE *点指向该表中的某个条目)上自由调用,您只需对由malloc之一设置的指针调用free() )函数族(某些函数,如dup()在后台使用malloc,所以生成的指针需要被释放) – user3629249