Speicher freigeben beim Schließen von QMainWindow

Alles rund um die Programmierung mit Qt
Antworten
freakonaleash99
Beiträge: 35
Registriert: 23. Juli 2017 12:35

Speicher freigeben beim Schließen von QMainWindow

Beitrag von freakonaleash99 » 18. Juli 2020 12:04

Hallo zusammen,

ich habe mal eine Frage zur Freigabe von Speicher.
Mir ist aufgefefallen, wenn ich in meinem Programm ein neues Fenster öffen (Designer-Formularklasse "QMainWindow"), wir bei jedem öffne zusätzlich 2MB Arbeitsspeicher belegt. Das kann ich über den Task-Manager beobachten. Das Problem ist, wenn ich dieses neue Fenster schließe, werden die 2MB nicht wieder freigegeben. D.h. wenn mein Programm eine lange Zeit läuft (mehrerr Tage) und der User immer wieder den das QMainWindow öffnen muss, werden immer wieder 2MB zusätzlich belegt. Meine Frage: Wie kann ich das vermeiden? Wenn das Fenster doch geschlossen wird, können die 2MB doch wieder frei werden, oder?

Ich öffne dieses neue QMainWindow einfach über einen Button:

Code: Alles auswählen

void MainWindow::on_pushButton_clicked()
{
    asdf *n = new asdf();			//asdf ist die entsprechende "Designer-Formularklasse" mit einem QMainWindow
    n->show();
}


Wenn ich folgendes mache, wird das neue asdf-MainWindow direkt nach Öffnen wieder geschlossen:

Code: Alles auswählen

void MainWindow::on_pushButton_clicked()
{
    asdf n;		
    n.show();
}

freakonaleash99
Beiträge: 35
Registriert: 23. Juli 2017 12:35

Re: Speicher freigeben beim Schließen von QMainWindow

Beitrag von freakonaleash99 » 18. Juli 2020 21:46

habs herausgefunden.
einfach beim schließen noch "delete this" einfügen, dann gehts....

veeman
Beiträge: 270
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Speicher freigeben beim Schließen von QMainWindow

Beitrag von veeman » 26. Juli 2020 10:49

Verwende dafür lieber this->deleteLater();

Ansonsten läufst du Gefahr das ein getriggertes Signal an ein nicht exsestierendes Objekt propagiert und die Anwendung abschmiert.
mfg veeman

mage-dev

Antworten