1

関数で (Q) ファイルを開きましたが、閉じるのを忘れてしまいました (コードの書き方を間違えたため)。メモリ、バッファ、および私の情報はどうなりますか?

例 (C++):

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

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

この関数を a で呼び出すとしますwhileこれはヒープの破損を引き起こす可能性がありますか?

前もって感謝します!

4

2 に答える 2

3

いいえ、リソース (ファイルなど) の解放を忘れても、何も壊れません。

取得したリソースが動的に割り当てられたメモリである場合、単に解放されず、メモリ リークが発生します。

この場合、close()関数の呼び出しを省略した場合、スタックが割り当てられているため何も起こりませんfile。コンパイラは、スコープ外になるとデストラクタを呼び出すコードを発行します (関数の最後で、そのコードで)。

于 2012-05-31T12:09:06.450 に答える
3

QFile のデストラクタが自動的に閉じます。したがって、メモリが破損することはありません。

于 2012-05-31T12:09:19.067 に答える