Einzelnen Beitrag anzeigen

Benutzerbild von DelphiBandit
DelphiBandit

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

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

  Alt 13. Nov 2014, 09:45
Hallo zusammen,

ich stehe vor einem mittelprächtigem Problem heute morgen und komme auch nach Stunden des Debuggens kein Stück weiter. Ich habe ein Klassenkonstrukt, welches aus einer JSON-Datei mit Leben gefüllt wird (Einstellungen). Nun kontrollierte ich mittels FastMM4 {$define FullDebugMode} und es bleiben reichlich Speicherlecks. Also eigentlich bleibt so ziemlich alles über, was da reingeladen wurde

1.) Im Konstruktor kann man die TObjectList<..>.Create komplett weglassen, diese werden vom JSON-Loader erzeugt
2.) Versuche ich die Objekte vom Typ TObjectList im Destruktor freizugeben bekomme ich einen abstrakten Fehler. Ist im Quelltext momentan auskommentiert, da es eh nur kracht.

Ich habe mir mal ein kleines Testprojekt erzeugt, welches den Sachverhalt mit einer simplen, verschachtelten Klasse nachstellt. Dachte erst es liegt an der Komplexität meiner grossen Klasse und ich habe irgendetwas übersehen. Aber funktioniert auch mit diesem simplen Beispiel nicht korrekt.

Das Testprojekt braucht das Verzeichnis C:\Temp, Populate legt die JSON-Datei an, danach Load und anschliessend Free. Habe das Ganze mal als fertiges Projekt angehängt, allerdings wird FastMM4.pas im Pfad erwartet und steht wiegesagt bei mir auf FullDebug.

Wie werde ich den Speicher wieder los, den mir der JSON-Loader durch dynamische Creates freundlicherweise belegt hat?
Angehängte Dateien
Dateityp: zip SimpleJSONLeak.zip (10,1 KB, 19x aufgerufen)
Carsten

Geändert von DelphiBandit (13. Nov 2014 um 15:02 Uhr)
  Mit Zitat antworten Zitat