是否有必要清除所有内部列表以避免泄漏?:
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;错误。)
答案 0 :(得分:1)
steps.clear()
就足够了,因为它会摧毁所有内在的QLists。销毁内部QList会调用所有Instruction
个时刻的析构函数。
因此,只要单个Instruction
不泄漏内存(例如,通过在构造函数中调用new
而在析构函数中不调用delete
),QList<QList<Instruction>>
将不会泄漏。