Einzelnen Beitrag anzeigen

Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: JSON-Serialisierung von generischen Listen nur mit MemoryLeaks (FastMM4)

  Alt 19. Nov 2014, 14:47
Hallo,

vielen Dank für Eure Mühe und stoxx für das Projekt ohne Speicherleck! Ich bin bis eben gerade noch davon ausgegangen, dass TObjectList<TIrgendwas> beim Erzeugen genauso OwnsObjects als Default auf True hat und sich beim .Free der ObjectList damit auch die Listenelemente selbst freigeben?

Bei allen anderen Objektkonstrukten, die bei mir kein Json nutzen, funktioniert das mit dieser Automatik auch bisher wunderbar und ohne Speicherverluste. Siehe in meiner Demo z.B. beim Populate-Button, lokale entryList wird am Ende freigegeben und erzeugt kein MemLeak. Kommentiere ich das am Ende gibt es ein MemLeak.

Oder taucht der von Dir angesprochene Bug nur auf, wenn man zusätzlich Json nutzt und muss man sich deshalb selbst um die Freigabe kümmern?

also nun nochmal komplett.

im Anhang eine Version ohne Speicherleck.
Zum einen ist zu beachten, dass eine Objectlist keine TCollection ist, also die Elemente der Liste müssen manuell selbst im Destructor gelöscht werden.
Delphi hat aber ein Bug in "DeleteRange" in TList<> und TObjectList<>, welcher den Abstrakten Fehler erzeugt.
Umgehen kann man ihn, indem man jedes Element einzeln im Destructor löscht. (absteigend durchgehen)
Carsten

Geändert von DelphiBandit (19. Nov 2014 um 16:55 Uhr)
  Mit Zitat antworten Zitat