Seite 1 von 1

Speicher freigeben beim Schließen von QMainWindow

Verfasst: 18. Juli 2020 12:04
von freakonaleash99
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();
}

Re: Speicher freigeben beim Schließen von QMainWindow

Verfasst: 18. Juli 2020 21:46
von freakonaleash99
habs herausgefunden.
einfach beim schließen noch "delete this" einfügen, dann gehts....

Re: Speicher freigeben beim Schließen von QMainWindow

Verfasst: 26. Juli 2020 10:49
von veeman
Verwende dafür lieber this->deleteLater();

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