Delphi TJSONObject 開放時に EInvalidPointer のエラー
Delphi TJSONObject + TJSONArray を利用して、開放しようとするとエラーが発生
Json := TJSONObject.Create;
try
JsonTagsArray := TJSONArray.Create;
try
Json.AddPair('Array', JsonTagsArray);
Caption := Json.ToString
finally
JsonTagsArray.Free;
end;
finally
Json.Free; // ここでエラー
end;
Json.Free をコメントアウトするとエラーは発生しなくなるが、メモリリークが発生Json := TJSONObject.Create;
try
JsonTagsArray := TJSONArray.Create;
try
Json.AddPair('Array', JsonTagsArray);
Caption := Json.ToString
finally
JsonTagsArray.Free;
end;
finally
// Json.Free; // メモリリークが起きる
end;
どうも TJSONArray に限らず、TJSONObject が開放されるときは配下もろとも開放されるらしく、入れ子になった TJSONObject でも同様の対応でよいみたいJson := TJSONObject.Create;
try
JsonTagsArray := TJSONArray.Create;
try
Json.AddPair('Array', JsonTagsArray);
Caption := Json.ToString
finally
// JsonTagsArray.Free; // 開放しなくてよい
end;
finally
Json.Free;
end;
aaaa
コメント