Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - New(), TObject.create -> Free, Dispose() ?


Delete - Sa 12.02.05 10:46
Titel: New(), TObject.create -> Free, Dispose() ?
Hallo,
wenn ich ein Objekt so erzeuge:

Delphi-Quelltext
1:
2:
 New(PMyObject);
 PMyObject^ := TMyObject.Create;

und dieses dann mit

Delphi-Quelltext
1:
 PMyObject^.Free;                    

freigebe, kann ich doch auf das

Delphi-Quelltext
1:
 Dispose(PMyObject)                    

verzichten oder?

Danke im Vorraus!


tommie-lie - Sa 12.02.05 12:19

Nein, mit New erzeugst du genug Platz für eine Objektreferenz, anschließend erzeugst du das Objekt. Mit Free gibst du nur den Speicher für das Objekt wieder frei, der Speicher für die Objektreferenz ist immer noch allokiert und muss mit Dipose freigegeben werden.

Aber du solltest die Gedanken über das Ganze machen, du hast da nämlich einen Pointer auf einen Pointer, also ein bisschen doppelt gemoppelt. Eigentlich braucht man in Pascal keine Pointer auf Objekte.