【发布时间】:2010-10-05 16:38:13
【问题描述】:
我有一个关于 Qt 内存泄漏的问题。
我有一个带有 2 个 QPushButtons 的 QMainWindow。
第一个按钮点击信号:
m_label = new QLabel(this);
QPixmap pix(this->size());
QPainter painter;
painter.begin(&pix);
QImage img("1.png");
painter.drawPixmap(this->rect(), QPixmap::fromImage(img));
m_label->setPixmap(pix);
painter.end();
第二个按钮点击信号:
delete m_label;
当我启动我的测试应用程序时,分配的内存大约是 11900 Kb 当我单击第一个按钮时,为应用程序分配的内存约为 12450 Kb 当我点击第二个按钮时,我分配了大约 12250 Kb 的内存
为什么我没有得到相同的 11900 Kb?这是泄漏吗?
所以如果要写如下代码:
QImage img("1.png");
QImage img1("1.png");
QImage img2("1.png");
QImage img3("1.png");
QImage img4("1.png");
QImage img5("1.png");
QImage img6("1.png");
QImage img7("1.png");
QImage img8("1.png");
QImage img9("1.png");
然后分配的内存会增长但不会减少。为什么?如何清理这个内存泄漏?
【问题讨论】:
-
你是如何测量内存消耗的?
-
...在 img...img9 的情况下,您预计它什么时候会减少? (但一般测量问题更相关)
标签: qt