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.