清除嵌套QList:内存泄漏风险?

时间:2015-12-23 23:01:10

标签: qt c++11 memory-leaks

是否有必要清除所有内部列表以避免泄漏?:

class Instruction
{
    int opcode;
    int data1;
    int data2;

    bool Load(QTextStream* in);
    void Save(QTextStream* out) const;
};

class Interpreter
{
    QList<QList<Instruction>> steps;

    bool Load(QTextStream* file)
    {
        if(file_is_bad)
        {
            return false;
        }

        int end = steps.size();
        for(int i=0; i<end; i++)
        {
            steps.at(i).clear();
        }
        steps.clear();

        //now that it's clear, rebuild it from file
        return true;
    }
};

或者我可以调用steps.clear();并称它为一天?

(此处还有更多文字可以通过&#34;过多的代码&#34;错误。)

1 个答案:

答案 0 :(得分:1)

伊戈尔是对的。 steps.clear()就足够了,因为它会摧毁所有内在的QLists。销毁内部QList会调用所有Instruction个时刻的析构函数。

因此,只要单个Instruction不泄漏内存(例如,通过在构造函数中调用new而在析构函数中不调用delete),QList<QList<Instruction>>将不会泄漏。

相关问题