Speicherfresser bei show-Aufruf

Alles rund um die Programmierung mit Qt
Antworten
Nemesis
Beiträge: 20
Registriert: 19. Oktober 2007 09:51
Wohnort: Erlangen

Speicherfresser bei show-Aufruf

Beitrag von Nemesis »

Hallo,

ich habe ein Programm geschrieben, bei dem ich häufiger mal ein Widget visible/invisible mache. Irgendwann ist mir aufgefallen, dass ein Speicherfresser drin ist, und nach längerem Suchen habe ich dann bemerkt, dass der Speicherbedarf nach jedem show-Aufruf wächst.
Um sicher zu gehen, dass das wirklich das Problem war, habe ich folgendes Programm geschrieben:

Code: Alles auswählen

int main (int argc, char *argv[])
{	
	QApplication a(argc, argv);

	QWidget *w = new QWidget();
	
	bool flag = true;

	while(1)
	{
		if(flag)
		{
			w->show();
			flag = false;
		}
			
		else
		{
			w->hide();
			flag = true;
		}
	}
	return a.exec();
}
Und auch hier ist es so, dass der Speicherbedarf ständig ansteigt.

Kann mir vielleicht jemand sagen, wie ich das Problem umgehe?

Schon mal danke im Voraus!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dein Testcode passt nicht ganz. Bei jedem show()/hide() erzeugst du ein Event. Da deine EventLoop aber noch gar nicht arbeitet (a.exec()) können diese Events nicht abgearbeitet werden und füllen somit langsam den Speicher...
Nemesis
Beiträge: 20
Registriert: 19. Oktober 2007 09:51
Wohnort: Erlangen

Speicherfresser bei show-Aufruf [gelöst]

Beitrag von Nemesis »

Danke für die schnelle Antwort! :)

Oha, das ist natürlich ungünstig, wenn man so einen Fehler in einem Testprogramm macht :oops:

Aber jetzt weiß ich auch, warum mein richtiges Programm ständig wächst. Da hab ich nämlich auch ein Problem mit der Event-Abarbeitung...
Da hast du mich auf eine gute Idee gebracht :)

Also nochmals besten Dank!
Antworten