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()会自动为我释放内存,还是我需要手动删除它?如果我编写大量文本,是否存在任何可能导致运行时错误的限制?
谢谢!
是,fclose释放与关联的所有资源FILE *。根据经验,仅free在分配了的内容上使用malloc,仅delete在分配了的内容上使用new。
而且,您永远不会“重用”同一指针:调用fopen将返回new FILE *。
顺便说一句,既然您正在使用C ++,请考虑研究fstream。它将为您处理资源管理。