Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Destructor unter C (https://www.delphipraxis.net/21933-destructor-unter-c.html)

MrKnogge 10. Mai 2004 11:29


Destructor unter C
 
Mahlzeit !

Wir nehmen derzeit Construktoren und Destruktoren unter C durch, nun meint weis mein Lhere nicht genau, er meint der Inhalt einer Destruktors könnte beispielsweise folgendermasen aussehen:
Code:
delete this
Wobei ich dachte, dass man mit delete den Destruktor aufruft, was ja zu einem Fehler führen würde.

Kann man den Speicher einer Klasse mit einem Destruktor freigeben, oder geht dies nur mit delete "Klassenname" ?

Muetze1 10. Mai 2004 11:36

Re: Destructor unter C
 
Moin!

delete ruft automatisch den destructor auf in C++, wenn es eine Instanz ist. Der Destruktor kann in C++ auch nicht direkt aufgerufen werden. Die Objekte werden immer mit delete gelöscht und freigegeben (was dann den Destructor des Objekts ausruft). Es ist vom Prinzip her das gleiche Prinzip wie beim Constructor und new.

Code:
delete this
Dieses Konstrukt ist auch sehr interessant, aber so zum Absturz verdammt. Du rufst mit delete den Destruktor zu this auf - wobei this die aktuelle Instanz ist, von der heraus du ja das delete aufrufst. Soweit gibt er dann die Klasse frei durch den Destruktor, Problem dabei ist folgender: Wenn er mit dem Destructor fertig ist, dann springt er wieder zurück zum Aufrufer um dort dann fortzufahren, und das wäre dann die ebend zerstörte this Instanz, somit springt er in einen nicht mehr zugeordneten Speicherbereich und dann knallts...

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz