小编use*_*316的帖子

Qt内存泄漏使用QPixmap

我在这段代码中的某个地方发现了一个奇怪的内存泄漏.该方法是SLOT连接到另一个线程中的方法.它做了两件事:1它用另一个线程所在的迭代更新一个文本框.2它将GUI上显示的图像更新为与该迭代对应的图像.

它适用于10-30次迭代,然后爆炸.在任务管理器中查看其内存使用情况,我可以看到它在开始时是稳定的,然后每次迭代都会将RAM使用量增加大约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;
}
Run Code Online (Sandbox Code Playgroud)

有问题的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);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt memory-leaks

3
推荐指数
1
解决办法
2161
查看次数

标签 统计

c++ ×1

memory-leaks ×1

qt ×1