Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verständnisfrage: TJSONObject create/free/destroy?

  Alt 26. Jul 2022, 12:52
Zitat:
Delphi-Quellcode:
   jsonArr:= TJSONArray.Create;
   jsonArr.Add(p1);
   jsonArr.Add(p2);

   json.AddPair('path', jsonArr);
  finally
   jsonArr.Free; <<<<
  end;
 finally
   //jetzt brauche ich diese Objekte nicht mehr also..
   p1.Free; // hier knallt es schon "Ungültige Zeigeroperation", ebenfalls mit .Destroy
   p2.Free;
 end;
Beim Add übernimmt das JSONArray die Kontrolle, also Dieses gibt beim ersten Free auch P1 und P2 mit frei.

Zitat:
Sollte ich besser destroy anstelle von free verwenden?
Nein.

Destroy ruft man im Allgemeinen niemals direkt auf.

Und wenn schon Free knallt, dann kann Destroy nur noch mehr knallen, weil das if Assigned(Self) im Free fehlt
und es dann nicht nur bei "ungültigen" Zeigern knallt, sondern auch noch bei nil.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Jul 2022 um 13:07 Uhr) Grund: Schlechtschreibung
  Mit Zitat antworten Zitat