Beim Add übernimmt das JSONArray die Kontrolle, also Dieses gibt beim ersten Free auch P1 und P2 auf.
Das ist ähnlich wie bei
TObjectList<T> oder
TStringList mit
OwnsObject = True. Auch in diesen beiden Fällen übernimmt die Klasse das Wegräumen der Objekte.