我在這段代碼中的某處發現了一個奇怪的內存泄漏。該方法是連接到另一個線程中的方法的SLOT。它有兩件事:1它用另一個線程所在的迭代來更新文本框。 2它將GUI上顯示的圖像更新爲與該迭代相對應的圖像。Qt內存泄漏使用QPixmap
它適用於10-30次迭代,然後爆炸。看到它在任務管理器中的內存使用情況,我可以看到它一開始就穩定下來,然後每次迭代都會將內存使用量增加大約10%。我能做些什麼來消除泄漏?
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);
}
發出信號的頻率和頻率如何? – Robert 2014-10-28 15:42:15
最小的可運行示例將有助於測試您的問題。您可以添加它嗎? – gmas80 2014-10-28 15:42:17