Piszę bardzo rozbudowany program i nie wiem czy poprawnie zwalniam w nim zasoby, ponieważ po kilkudziesięciu uruchomieniach go, program zaczyna coraz wolniej działać, a po pewnym czasie pojawia się błąd EOutOfMemory. Program korzysta z kilku tablic dynamicznych (globalne):
KNr : array of Word;
KSta : array of String[40];
KKol : array of Word;
KWid : array of Boolean;
FileList : array of String;
FileDate : array of TDate;
TabImage : array of TImage;
PImage : array of TImage;
NImage : array of TImage;
Godzina : array of array of TDateTime;
Rect : array of array of TRect;
Kolor : array of array of Byte;
a tak wygląda u mnie zwalnianie zasobów:
- dla tablic typu array of array of ... wywołuję:
for i:=0 to Length(Godzina)-1 do
begin
Godzina[i]:=nil;
end;
Godzina:=nil;
- dla czcionek:
FontGodzina:=TFont.Create;
...
FontGodzina.Free;
- dla array of TImage:
for i:=0 to Length(Image)-1 do
begin
Image[i].Destroy;
end;
dodam, że rysuję tylko po canvasie obrazka, a funkcja rysująca jest wywoływana z dll'a (dll ładowany statycznie i przekazuję do niego tylko uchwyt handle canvasa), obrazek ma duze rozmiary, bo około 120x(10000-1000) i tych komponentów image jest kilka.
- dla bitmap:
b:=Tbitmap.Create;
...
b.Free;
no to chyba tyle, więc nie wiem właściwie co tutaj może powodować problemy, może problem jest ze zwalnianiem obrazków? Albo problem jest w czymś innym, nie wiem juz :-/
Jeśli ktoś wiec, co może powodować takie problemy z pamięcią, to prosze o pomoc [!!!] [!!!] [!!!]