Zitat von
shmia:
Das scheint mir eher ein Speicher Fragmentierungsproblem zu sein.
[...]
Man sollete also:
[..]
* AnsiStrings und dynamische Arrays nicht Elementweise vergrössern
* statt dynamische Arrays, die häufig in der Grösse verändert werden die Klasse TList und deren Nachkommen verwenden.
Delphi-Quellcode:
// das wäre ein Beispiel, wie man es nicht machen sollte
SetLength(dynamic_array, Length(dynamic_array)+1);
Oha.
Davon wird (in diesem Fall leider) an manchen Stellen exzessiver Gebrauch gemacht.
Also sollte ich vielleicht erstmal hier auf TList umstellen... Puuh.. das wird viel Arbeit.
Edit Nachtrag:
Nochmal @Hewy: Es gibt kein Leak. Alle Objekte, die irgendwann mal allokiert werden, werden auch wieder Freigegeben.
Blöderweise halt erst beim Beenden der Anwendung und nicht schon dann, wenn sie einfach nicht mehr benötigt werden.
Ergo: Es wird alles aufgeräumt. Sämtliche Tools wie FastMM & Eurekalog können kein Leak entdecken, weil eben im technischen Sinne keines existiert. Und ich denke nicht, dass FastMM meinen Code analysiert und mir aufzeigt, wo ich ein Objekt optimalerweise freigeben müsste, damit das nicht unnötig rumliegt.
Man.. ich würd mir so sehr eine Garbage-Collection wünschen.
Edit Nachtrag 2:
Würde sich das Fragmentierungs-Problem mit dem FastMM lösen?