我在一个函数中打开一个(Q)文件,但我忘了关闭它(因为我冤枉写代码)。内存,缓冲区和我的信息会发生什么变化?
示例(C ++):
void myFunction(QString path)
{
QFile file(path);
file.open(...);
if( _myWrongCondition_ )
{
informations = // do something
writeInformationToFile(file,informations);
file.close;
}
}
假设我在while
中调用此函数。这会引发堆损坏吗?
提前致谢!
答案 0 :(得分:3)
QFile的析构函数会自动关闭它。所以你不会有任何内存损坏。
答案 1 :(得分:2)
不,忘记释放资源(例如文件)不会破坏任何内容。
如果获取的资源是动态分配的内存,那么它就不会被释放而且你会有内存泄漏。
在这种情况下,如果省略调用close()
函数,则根本不会发生任何事情,因为file
是堆栈分配的,编译器将发出代码以在其超出范围时调用其析构函数(在函数的末尾,在该代码中)。