![]() |
TObjectList JsonToObject MemoryLeak
Delphi-Quellcode:
Hallo, Ich habe eine Frage, mir reißt es durch diese Zeile ein MemoryLeak. Das wird mir beim schließen (ReportMemoryLeaksOnShutdown) angezeigt.
var
LsList: TStringList; begin LsList := TStringList.Create; try LsList.LoadFromFile(FPath + DataFileName); FShadowData:= LsList.Text; FAnsagenListe := TJson.JsonToObject<TObjectList<TAnsagen>>(LsList.Text); //memory Leak FillAnsagenListe; finally LsList.Free; end; // try end; Der Code tut zwar was er soll und es ist auch bei dem Tool an sich zu verschmerzen, aber ich würde gerne in Zukunft weiter damit arbeiten. Frage: Wie muss der Code aussehen damit ich kein Memoryleak bekomme? Dank euch :) |
AW: TObjectList JsonToObject MemoryLeak
Gibst du die FAnsagenliste wieder frei?
|
AW: TObjectList JsonToObject MemoryLeak
Ja, die Liste wird beim close freigegeben.
Delphi-Quellcode:
AHHHHHHHHHHber du hast mich auf die Lösung gebracht! Vielen Dank!!!
begin
if Assigned(FAnsagenListe) then FAnsagenListe.Free; ReportMemoryLeaksOnShutdown:= True; end Das Problem war nicht das freigeben. Sondern das ich brav und artig wie immer diese Liste beim Start "created" habe. mit
Delphi-Quellcode:
Das scheint aber zuviel zu sein, lasse ich die Zeile beim Start weg, läuft es!
FAnsagenListe:= TObjectList<TAnsagen>.Create;
Bedeutet das bei
Delphi-Quellcode:
zusätzlich noch eine Liste erstellt wurde.
FAnsagenListe := TJson.JsonToObject<TObjectList<TAnsagen>>(LsList.Text);
|
AW: TObjectList JsonToObject MemoryLeak
Zitat:
Alternativ zum Weglassen des
Delphi-Quellcode:
kannst du auch vor der Zuweisung ein Free aufrufen:
FAnsagenListe:= TObjectList<TAnsagen>.Create;
Delphi-Quellcode:
FAnsagenListe.Free;
FAnsagenListe := TJson.JsonToObject<TObjectList<TAnsagen>>(LsList.Text); |
AW: TObjectList JsonToObject MemoryLeak
Zitat:
Delphi-Quellcode:
Das Arbeiten mit Json und dem einfachen "draufklatschen" auf ein Objekt ist eine herrliche Sache. Ich liebe es!
if Assigned(FAnsagenListe) then FAnsagenListe.Free;
Gruß und Dank Eure ScharfeMieze |
AW: TObjectList JsonToObject MemoryLeak
Zitat:
Delphi-Quellcode:
procedure TObject.Free;
begin // under ARC, this method isn't actually called since the compiler translates // the call to be a mere nil assignment to the instance variable, which then calls _InstClear {$IFNDEF AUTOREFCOUNT} if Self <> nil then Destroy; {$ENDIF} end; |
AW: TObjectList JsonToObject MemoryLeak
Oh.. Danke sehr :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz