Seite 1 von 1

Gibt Qt den Speicher frei?

Verfasst: 23. Juli 2008 22:04
von reimer
Mal so ne Verständnisfrage. Gibt Qt den Speicher, den label belegt, wieder frei?

Code: Alles auswählen

...
int main(int argc, char *argv[]) {
  QApplication app(argc, argv);
  QLabel *label = new QLabel("Werde ich gelöscht?");
  label->show();
  return app.exec();
}
Ich bin mir zu 99% sicher, dass ich den Speicher manuall wieder freigeben muß, aber wie gesagt, nur zu 99%.

Verfasst: 23. Juli 2008 22:09
von upsala
In diesem speziellen Fall nicht, da du dem QLabel keinen Parent angegeben hast.

Verfasst: 23. Juli 2008 22:37
von reimer
Mit QApplication::activeWindow() kann ich label ein Parent übergeben und wird somit dann automatisch gelöscht, wenn der Parent gelöscht wird?

Danke übrigens für die schnelle Antwort :) Dieses Forum bewerte ich ab sofort als "Express-Forum" :D

Verfasst: 24. Juli 2008 09:12
von upsala
Du hast keinen passenden Parent, da dein QLabel dein einziges QWidget ist. Du kannst nur das Flag Qt::WA_DeleteOnClose setzten, und wenn dein Widget/deine Anwendung das Kommanda zum schließen des Widgets bekommt wird das Widget gelöscht.

QApplication::activeWindow() sollte ein Verweis auf dein QLabel sein, bringt dir also wieder nichts.