Oli*_*ryn 7 c memory free file fclose
假设我有以下程序:
#include <stdio.h>
int main () {
FILE * pFile;
pFile = fopen ("myfile.txt","r");
fclose (pFile);
//This never happens: free(pFile)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我从未见过free(pFile)关闭文件句柄后执行的程序.这是为什么?
我知道既然fclose()没有收到指针pFile,那么它实际上并没有释放指针的内存.我的印象是,如果指针指向动态分配的内存,指针应始终释放内存.为什么没有人free()的文件指针?
Ben*_*Ben 15
free被调用以响应malloc返回分配的内存. fopen可能确实做了一些mallocing,但关闭句柄(fclose)的行为,按照设计,将清理一切fopen.您拥有的合同fopen是关闭句柄将释放所有未完成的资源.
一般的经验法则是每个人alloc都有free.如果你调用一个函数alloc,它的描述应警告你调用者负责释放的内容.
长话短说,fclose将清理所创造的任何资源fopen.
| 归档时间: |
|
| 查看次数: |
11881 次 |
| 最近记录: |