我在这段代码中发现了一个奇怪的内存泄漏。该方法是连接到另一个线程中的方法的SLOT。它有两个功能:1. 更新文本框中的迭代次数,以便从另一个线程中找到相应的图像。2. 更新GUI上显示的图像为对应的迭代次数的图像。
它在10-30个迭代中工作得很好,但之后就会崩溃。通过任务管理器观察其内存使用情况,我可以看到它一开始是稳定的,然后每次迭代都会增加大约10%的RAM使用量。我该如何消除这个泄漏?
所涉及的SLOT是:
它在10-30个迭代中工作得很好,但之后就会崩溃。通过任务管理器观察其内存使用情况,我可以看到它一开始是稳定的,然后每次迭代都会增加大约10%的RAM使用量。我该如何消除这个泄漏?
Transition::Transition(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Transition)
{
ui->setupUi(this);
this->files = files;
imageObject = new QImage();
scene = new QGraphicsScene(this);
}
Transition::~Transition()
{
delete ui;
delete imageObject;
delete scene;
}
所涉及的SLOT是:
void Transition::onCounterChanged(QString counter){
ui->imageCounter->setText(counter);
foldername = ui ->folderName->toPlainText();
int m = counter.toInt();
QString filename = files[m];
imageObject->load(filename);
image = QPixmap::fromImage(*imageObject);
scene->clear();//THIS FIXES THE LEAK
scene->addPixmap(image);
ui->picDisplay->setScene(scene);
ui->picDisplay->fitInView(image.rect(),Qt::IgnoreAspectRatio);
}