【发布时间】:2023-03-06 10:17:01
【问题描述】:
我接触 C++ 已经好几年了,所以请耐心等待......
我的程序中存在内存泄漏,导致运行时错误。这会导致错误吗?
我有一个全局变量FILE *fp;
在回调函数中,我有:
fp = fopen(filen,"w");
// do some writing
fclose(fp);
这个过程用同一个指针(fp)重复多次。使用相同的文件指针有问题吗? fclose() 会自动为我释放内存,还是我需要手动删除它?如果我正在编写大量文本,是否有任何限制可能导致运行时错误?
谢谢!
【问题讨论】:
-
正如您所说的那样,它是一个全局变量,我怀疑您遇到了未初始化变量的问题。始终将 FILE 设置为
NULL,以防您在实际使用指针进行读/写时在代码中的某处检查if(fp != NULL)。另外,也有可能是文件打开失败返回NULL,当你尝试使用这个指针也会导致崩溃。
标签: c++ file-io memory-leaks fopen fclose