1 [Pascal/Delphi] Fehlersuche bei steigenden Arbeitsspeicher Run Time Error 223 | Tipps zu PC und Technik

[Pascal/Delphi] Fehlersuche bei steigenden Arbeitsspeicher Run Time Error 223

8. Mai 2018 - Lesezeit: ~1 Minute

Mit StringList wird bei jedem .add etwas in den Speicher geschrieben. Mit .free gibt man den Speicher wieder frei.

ABER wenn der Arbeitsspeicher trotzdem weiter ansteigt, hat man entweder ein .free vergessen oder etwas übersehen.

Wenn ein .free in einer Funktion gemacht wurde, zuvor aber eine Bedingung gemacht wurde z. B:

if (x = y) then exit;

Und das .free danach niemals aufgerufen wird... steigt der Speicher an. Besonders dramatisch wird soetwas, wenn man solch eine Funktion in einer Schleife durchlaufen lässt. Weil dann können schnell aus wenigen KB mehrere hundert MB werden.

Deshalb:

Bei .create's nach .free's suchen und zusätzlich nach vorzeitigen "exit" prüfen evtl. auch nach "break"/"continue" u. ä. !!

Bei dynamischen Arrays kann ich mir ein ganz ähnliches Problem vorstellen.

Wenn man das richtig gemacht hat, durfte das Programm je nach Ablauf keinen dauerhaft steigenden Arbeitsspeicher verursachen, wobei Schwankungen nach oben und unten (!) möglich sind.

Sinnvoll scheint hier auch die konstante Anwendung von

try and finally zu sein, um dieses Problem zu vermeiden (im finally Bereich dann ein x.free.).











Es wurden noch keine Kommentare verfasst, sei der erste!