Я новичок в C ++. Я пытаюсь создать один класс, унаследовав базовый класс QWidget
но я получаю утечку памяти при создании этого класса через новый.
здесь ниже у меня есть фрагмент кода класса и основного приложения
#include "QWidget"
#include "QDebug"
#include "ui_myobject.h"
namespace Ui {
class MyObject;
}
class MyObject : public QWidget{
Q_OBJECT
public:
explicit MyObject();
~MyObject();
Ui::MyObject *ui;
};
#include "myobject.h"
#include "ui_myobject.h"
MyObject::MyObject() : QWidget(),ui(new Ui::MyObject){
ui->setupUi(this);
qDebug() << "MyObject Initilised";
}
MyObject::~MyObject(){
delete ui;
qDebug() << "MyObject Deinitilised";
}
class Application : public QWidget
{
Q_OBJECT
public:
explicit Application(QWidget *parent = 0);
~Application();
MyObject *m_MyObject;
};
Application::Application(QWidget *parent) :QWidget(parent),ui(new Ui::Application){
ui->setupUi(this);
}
Я вызываю эту функцию через щель освобождения щелчка кнопки
void somefunction()
{
m_MyObject = new MyObject();
//mAlarm_main->Alarm();
m_MyObject->show();
delete m_MyObject;
}
int main(int argc, char *argv[])
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
; // Qt5 uses different graphical backend
#else
QApplication::setGraphicsSystem("raster");
#endif
QApplication a(argc, argv);
Application w;
// uncomment this line to remove window frame
//w.setWindowFlags(Qt::FramelessWindowHint);
w.setGeometry(0,0,800,480);
w.show();
return a.exec();
}
Когда я вызываю некоторую функцию, у меня утечка памяти в моем приложении. Я наблюдаю за размером стека, используя команду top, которая непрерывно увеличивается на 2 mb
после 200 times
моего приложения. Я удаляю свой объект, но все же возникают утечки памяти, есть ли другой способ удалить QWidget
Если я не вызову m_MyObject-> show (); Функция утечки памяти не происходит.