我只是好奇这个问题:忘记调用std :: ofstream关闭函数会导致内存泄漏吗?我给出以下示例来说明我的问题:
using namespace std;
ofstream myfile;
myfile.open ("C:\\report.html");
myfile << "<html lang=\"en\"> " << endl;
myfile << "<head>" << endl;
Run Code Online (Sandbox Code Playgroud)
或许,我们也应该myfile.close()在代码脚本的末尾调用.但是,如果我忘了调用关闭功能,会发生什么?它会导致内存泄漏吗?我已经使用memcheck并valgrind在linux中检查程序,并且没有找到内存泄漏.那么如果没有调用close函数会有什么副作用.
当您的std::ofstream对象超出范围时,由于使用RAII和自动调用对象析构函数,它将自动关闭.
在这种情况下,您的代码是完全可以接受的,并且不会导致内存泄漏.根本不需要手动关闭.
只有close在你想要在超出范围之前重用该对象时才使用,即如果ofstream对象是一个类的成员并且你想重新使用它,那么可以调用close它然后用不同的方法重新打开它档案等