Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Freigabe von Objekten in C++


Delete - Mi 18.01.17 21:23
Titel: Freigabe von Objekten in C++
- Nachträglich durch die Entwickler-Ecke gelöscht -


Th69 - Do 19.01.17 10:47

Die Antwort ist ganz einfach: in C++ erzeugst du ja die Objekte mit new, also müssen diese auch mit delete wieder freigegeben werden (in Delphi aber mittels Create [http://docwiki.embarcadero.com/Libraries/XE8/en/Vcl.Controls.TControl.Create] und Free [http://docwiki.embarcadero.com/Libraries/XE8/en/System.TObject.Free] (bzw. Destroy [http://docwiki.embarcadero.com/Libraries/XE8/en/Vcl.Controls.TControl.Destroy])).

Du mußt aber unterscheiden, ob du jetzt reine C++ Klassen hast (wie in deinem Beispielcode) oder aber von VCL-Objekten geerbte Klassen (wie z.B. eine von TForm abgeleitete eigene Form). Bei VCL-Objekten (Steuerelemten) sollte möglichst immer der Owner (dieser ist nicht zwangsläufig der Parent) beim Erzeugen mit angegeben werden, so daß beim Zerstören einer Form alle untergeordneten Steuerelemente automatisch mit freigegeben werden.

Bei reinen C++ Klassen gibt es ja generell das RAII [https://de.wikipedia.org/wiki/Ressourcenbelegung_ist_Initialisierung]-Prinzip, so daß man manuelle delete-Aufruf vermeiden sollte (und stattdessen dann z.B. unique_ptr<T> verwenden sollte).


Delete - Do 19.01.17 11:34

- Nachträglich durch die Entwickler-Ecke gelöscht -