Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: A/V bei löschen von Element in Array
17. Jul 2010, 01:11
Wenn du die Stringreferenzen nicht korrekt behandelt, dann muß es ja probleme geben.
der String, welchen du "angelich" löschts ... da überschreibst du nur den "Zeiger", aber der String selber bleibt als Speicherleck zurück.
Und als Ausgleich hast du durch dein Move auch noch den letzen String im Array mit einer doppelten Referenz, welcher aber nicht in der Referenzzählung auftaucht, womit der dann schon freigegeben wird, aber dennoch in der Liste steht ... taj, beim nächsten Zugriff darauf, da muß es einfach knallen.
Mein Tipp: verwende eine echte Stringliste, statt des Arrays ... so sehr aufblähen tut soeine Liste auch nicht und du mußt nicht an der Referenzzählung rumfummeln.
Ansonten mußt du die Zeiger halt korrekt behandeln, also manuell auf nil, bzw. einen Leerstring setzen.
$2B or not $2B
|