Frage zu wxWidgets
-
Hallo !
Wie handhabt wxWidgets die Speicherfreigabe von buttons, panels usw.
In den Tutorials werden diese in der Initialisierungsfunktion erstellt, es wird also keine membervariable angelegt damit man den zeiger auf das button objekt wieder mit delete freigeben kann.Ist das wirklich nicht nötig? falls ja, wie gibt wxWidgets den Speicher wieder frei ? (die adresse des zeigers wird ja nirgends gespeichert)
Das diese widgets ein close/destroy event vom parent fenster bekomm is mir schon klar, aber ein objekt kann sich doch nicht selbst löschen (also in einer memberfunktion "delete this" aufrufen). Hab das noch nicht ausprobiert, aber theoretisch kann es ja nicht gehen, weil man nach delete this wieder in den speicher des objekts zurückspringt, der aber schon wieder freigegeben ist.
-
wxWidgets regelt bei Fenstern die Löschung, solange es ein Kindfenster ist.
Dieses wird dann mit dem Elternfenster zerstört. Der Pointer ist natürlich nicht verloren, da er ja an das Elternfenster übergebenwird, welches ihn speichert.delete this funktioniert, allerdings wird danach this ungültig, ist auch nur in wenigen Fällen wirklich sinnvoll.
Auch muss man dann sicher sein, das das Klassen objekt auf dem Heap liegt.