堆损坏:如果我不关闭(Q)文件会发生什么?

时间:2012-05-31 12:07:52

标签: c++ qt qfile

我在一个函数中打开一个(Q)文件,但我忘了关闭它(因为我冤枉写代码)。内存,缓冲区和我的信息会发生什么变化?

示例(C ++):

void myFunction(QString path)
{
    QFile file(path);
    file.open(...);

    if( _myWrongCondition_ )
    {
        informations = // do something
        writeInformationToFile(file,informations);
        file.close;
    }
}

假设我在while中调用此函数。这会引发堆损坏吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

QFile的析构函数会自动关闭它。所以你不会有任何内存损坏。

答案 1 :(得分:2)

不,忘记释放资源(例如文件)不会破坏任何内容。

如果获取的资源是动态分配的内存,那么它就不会被释放而且你会有内存泄漏。

在这种情况下,如果省略调用close()函数,则根本不会发生任何事情,因为file是堆栈分配的,编译器将发出代码以在其超出范围时调用其析构函数(在函数的末尾,在该代码中)。