Hallo Leute!
Im Programm Lexart programmiere ich zur Zeit recht große Rekursivfunktionen. Da kommt es öfter vor, dass eine Abbruchbedingung nicht stimmt und das Programm relativ schnell den Speicher des Rechners mit Leichen füllt.
Wenn ich da nicht aufpasse (und das Programm mit kill zwangsbeende) kann das sogar soweit gehen, dass nichts mehr geht (System hängt sich auf).
Gibt es einen Weg, diese Speicherüberläufe zu vermeiden?
Viele Grüße,
Euklid
Speicherleichen
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Bei Rekursionen entsteht das Problem eher durch einen Stacküberlauf, schalte einfach die Stackprüfung ein damit Überläufe da unterbunden werden. Wenn du allerdings bei den einzelnen Rekursionen Objekte oder Pointer erzeugst wirst du das Problem nicht gelöst bekommen. Die mußt du gezielt innerhalb der Rekursionen wieder abbauen oder du sammelst die in einer TList und kannst sie dann darüber sauber wieder beseitigen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)