Zupełnie nie wiem, czy przypadkiem temat nie nadaje się do 'newbie', ale niestety nie znalazłem nigdzie odpowiedzi na mój problem.
Mam klasę:
type
TKlasa = class
public
int1, int2:integer;
str1:string;
constructor Create(i1,i2:integer; s1:string);
end;
Czyli nic specjalnego.
Chcę jednak utworzyć kilkanaście tysięcy obiektów tego typu. Czynię to dodając każdego do listy TList. Też nie ma problemu.
Problem rodzi się, gdy chcę elementy usunąć z listy lub całkowicie ją wyczyścić. Owszem, obiekty znikają z listy, ale zużycie pamięci w ogóle nie maleje.
Przed stworzeniem obiektów program zajmuje 70MB w ramie, po stworzeniu jakieś 500 MB.
Robię lista.clear; - lista jest wyczyszczona, ale program nadal zżera 500 MB... To samo gdy każdy obiekt usuwam z listy samodzielnie (lista.delete(indeks)).
Domyślam się, że lista przechowuje tylko wskaźniki do obiektów, a więc z listy usuwam konkretnie wskaźnik.
Teraz jak rozwiązać problem niezwalniania pamięci? Jak napisać destructor do tej klasy: co powinien zawierać w sobie?