Seite 1 von 1

Speicherfresser bei show-Aufruf

Verfasst: 16. Juni 2008 15:40
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!

Verfasst: 16. Juni 2008 16:54
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...

Speicherfresser bei show-Aufruf [gelöst]

Verfasst: 16. Juni 2008 19:03
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!