1

我在函数中打开了一个(Q)文件,但我忘记关闭它(因为我写错了代码)。内存、缓冲区和我的信息会怎样?

示例(C++):

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

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

假设我在一个while. 这会引发堆损坏吗?

提前致谢!

4

2 回答 2

3

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

如果获取的资源是动态分配的内存,它将不会被释放,并且您将遇到内存泄漏。

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

于 2012-05-31T12:09:06.450 回答
3

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

于 2012-05-31T12:09:19.067 回答