Zitat von
ichbins:
Der Fehler beim Freigeben von Klasse B liegt vielleicht daran dass der Inhalt des Pointers auf KlasseB schon geleert wurde. Jedenfalls wird die Klasse nicht freigegeben:
Delphi-Quellcode:
var
a:array[1..1000000] of tsuperklasse;
i:integer;
begin
for i:=low(a) to high(a) do begin
sk:=tsuperklasse.Create;
sk.klasseb:=tklasseb.create;
sk.klasseb.klassea:=tklassea.Create;
sk.Free;
end;
end;
Der
RAM-Verbrauch der Anweundung steigt jedesmal um einige MB an.
Hm, ja aber ohne jetzt die jeweiligen Destructoren zu sehen, geh ich mal von den Standard destructoren aus und damit is klar, dass weder KlasseB noch die in KlasseB enthaltene KlasseA freigegeben wird, womit sich auch der vermehrte Ramverbrauch erklärt.