Warum müssen wxWidgetsObjekte nicht wieder entfernt werden?
-
Wenn ich per
wxMenu* fileMenu = new wxMenu;
ein Objekt mit new erzeuge, müsste ich es dann nicht wieder (wie bei Standard C++) mit delete löschen?
-
Weil sich in der Regel das jeweilige Parentfenster darum kümmert.
Wenn du es so löschen willst, solltest do obj->Destroy() aufrufen, statt delete obj.
-
Aber ich muss mich bei wxWidgets nicht um die Speicherfreigabe kümmern? (Vielen Dank schonmal)
-
11082008 schrieb:
Wenn ich per
wxMenu* fileMenu = new wxMenu;
ein Objekt mit new erzeuge, müsste ich es dann nicht wieder (wie bei Standard C++) mit delete löschen?
Wenn du wirklich nur diese Zeile hast, mußt du es natürlich selber löschen. Wer sollte das sonst machen?
Aber wenn du das fileMenu an ein Parent-Widget übergibst, wird das Parent-Widget dein fileMenu löschen. Vorausgesetzt das Parent-Widget wird auch von einem Parent-Widget gelöscht.Usw. usf.
-
Aber irgendwann muss ich doch mal beim obertsen Element angekommen sein. Aber auch das scheine ich ja nicht löschen zu müssen. (Vielen Dank soweit!)
-
Nein, das kümmert sich selbst darum. (Es geht ja auch delete this;).
Es fängt also die Plattformspezifische "WM_CLOSE" und bereinigt sich dann selbst. Das hat u.a. mit dem Eventsystem zu tun, da ja evtl. noch Events aus der Anwendung abgefangen werden müssen, bevor das Objekt sich selbst löscht.
-
Vielen Dank für die Antworten!