Witam, mam kilka pytań, więc od razu przejdę do rzeczy...
- Powiedzmy, że mam zdefiniowane takie oto klasy:
TKlasa = class
public
Text: String;
end;
TInnaKlasa = class
public
Klasy: Array of TKlasa;
end;
Jak widać TInnaKlasa zawiera dynamiczną tablicę składającą się z
TKlasa, a każda z nich posiada dynamiczną zmienną Text...
Powiedzmy, że teraz uruchomię to:
var
InnaKlasa: TInnaKlasa;
begin
InnaKlasa := TInnaKlasa.Create;
SetLength(InnaKlasa.Klasy, 1);
InnaKlasa.Klasy[0] := TKlasa.Create;
InnaKlasa.Klasy[0].Text := 'DUPA';
No i teraz jak najbardziej poprawnie na świcie, żeby nie uronić ani
jednego bajtu, a jednocześnie najszybciej, zwolnić pamięć ze
zmiennej Text, klasy Klasy[0], tablicy Klasa oraz klasy InnaKlasa ?
Bo pewnie InnaKlasa.Free nie załatwi sprawy...
-
Czym się w praktyce różni Dispose() od Finalize() ?
-
Pomyślałem sobie, że jeśli constructor Create przydziela pamięć
dla klasy to pewnie Free zwalnia wszystko pięknie tym czasem
definicja Free w module System wygląda tak:
procedure TObject.Free;
begin
if Self <> nil then Destroy;
end;
natomiast definicja Destroy wygląda jeszcze lepiej:
destructor TObject.Destroy;
begin
end;
O co tu biega, 1 Kwietnia czy co ?