假设我有以下程序:
#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()
也不接收其参数的指针。 - Keith Thompson