Qt似乎到处泄漏内存

时间:2013-06-11 11:36:23

标签: windows qt memory memory-leaks settext

我在Qt中遇到内存泄漏问题。

问题是,当我运行像:

这样的方法时
qwidget->show();
qwidget->hide();
qwidget->setVisible(...);
qlabel->setText(...);
qwidget->setEnabled(...);
然后它泄漏了记忆。 我不会动态创建任何对象。我在启动时创建了所有小部件,我只是隐藏和显示小部件并一直在某些标签上更改文本。 当我删除这些方法时,它根本不会泄漏内存。

是否有人知道为什么会这样,或者有人知道引擎盖下发生了什么?或者Qt有内存问题吗?

我在发布模式下使用Qt 5.0.1 x64运行Windows 7 x64。


现在我添加了一个测试代码:

#include "qtmemoryleaktest.h"
#include "Content_Logs.h"

QWidget* m_placeholder;
bool m_toggle;

QtMemoryLeakTest::QtMemoryLeakTest(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    m_placeholder = new Content_Logs(this);

    this->layout()->addWidget( m_placeholder );

    connect( ui.pushButton, &QPushButton::clicked, this, &QtMemoryLeakTest::toggleClick );
}

void QtMemoryLeakTest::toggleClick()
{
    if( m_toggle = !m_toggle )
    {
        m_placeholder->show();
    }
    else
    {
        m_placeholder->hide();
    }
}

每次点击按钮,内存都会增长。在20分钟内从8 mb到47 mb。 但是如果将Content_Logs替换为QWidget,则没有内存泄漏。所以我认为Qts自我创建的ui-classes中有一个错误?在Content_Logs中,我有标签,lineEdits,Spacers,TableWidgets,Checkboxes,DateTimeEdits,ComboBoxes等。

Conte_Logs中的代码:

#include "Content_Logs.h"

Content_Logs::Content_Logs( QWidget* parent = 0 )
    : QWidget( parent )
{
    ui.setupUi( this );
}

Content_Logs::~Content_Logs()
{

}

0 个答案:

没有答案