重用文件指针会导致内存泄漏吗?

Jef*_*eff 2 c++ file-io fopen memory-leaks fclose

自从我接触C ++已经有好几年了,所以请忍受...

我的程序中发生内存泄漏,这会导致运行时错误。这会导致错误吗?

我有一个全局变量 FILE *fp;

在回调函数中,我有:

fp = fopen(filen,"w");
// do some writing
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

使用相同的指针(fp),此过程重复多次。使用同一文件指针是否有问题?fclose()会自动为我释放内存,还是我需要手动删除它?如果我编写大量文本,是否存在任何可能导致运行时错误的限制?

谢谢!

Eti*_*tel 5

是,fclose释放与关联的所有资源FILE *。根据经验,仅free在分配了的内容上使用malloc,仅delete在分配了的内容上使用new

而且,您永远不会“重用”同一指针:调用fopen将返回new FILE *

顺便说一句,既然您正在使用C ++,请考虑研究fstream。它将为您处理资源管理。