Forum: Object-Pascal / Delphi-Language
Delphi
by Ghostwalker,
22. Dez 2007
Und genau um so etwas gehts im Thread hier (siehe 1. Post) :)
Egal, letztendlich haben wir beide Recht :)
Forum: Object-Pascal / Delphi-Language
Delphi
by Ghostwalker,
22. Dez 2007
Eingeschränkt richtig. Dort wo es eindeutig ist, gibts keine Probleme, aber folgendes sollte man lassen:
var
p : Pointer;
o : TObject;
begin
o := TObject.create;
GetMem(p 400);
Forum: Object-Pascal / Delphi-Language
Delphi
by Ghostwalker,
22. Dez 2007
Der Unterschied ist folgender:
Ohne Dereferenzierung (also ohne ^) änderst du die Adresse, auf die der Zeiger zeigt.
Mit Dereferenzierung (also mit ^) änderst du den Inhalt, auf den der Zeiger zeigt.
Wenn du einen Zeiger mit Getmem/New erzeugst und änderst die Adresse (ohne Dereferenzierung also), dann erzeugst du ein Memory-Leak, da du diesen Speicher angelegt hast, ihn aber nie...