Registriert seit: 28. Nov 2016
229 Beiträge
|
AW: Memory Leak bei TJsonObject
23. Dez 2021, 14:28
In der Tat ... entweder musst du vor der neu-Zuweisung das "alte" Objekt freigeben, oder du ziehst das Free aus dem unteren finally weiter nach oben.
Delphi-Quellcode:
procedure TdmCleverReach.RefreshToken;
var LResponse: TJsonObject;
LResponseStream: TBytesStream;
FormData: TidMultiPartFormDataStream;
begin
Formdata := TIdMultiPartFormDataStream.Create;
Formdata.AddFormField('grant_type', 'refresh_token');
Formdata.AddFormField('refresh_token', INIRefreshToken);
Formdata.AddFormField('client_id', INIClientID);
Formdata.AddFormField('client_secret', INIClientSecret);
FormData.Position := 0;
LResponseStream := TBytesStream.Create;
try
IdhttpToken.Request.CustomHeaders.Clear;
IdhttpToken.Request.CustomHeaders.AddPair('Content-Type','multipart/form-data');
try
IdhttpToken.Post(INITokenURL,FormData,LResponseStream);
LResponseStream.Position := 0;
//Hier scheint der Memory Leak zu entstehen, aber warum?
LResponse := TJsonObject.ParseJSONValue(LResponseStream.Bytes, 0, LResponseStream.Size) as TJsonObject;
try
// whatever
finally
LResponse.Free;
end;
LResponseStream.SaveToFile(PrgPath + '\ResponseStream.JSON');
finally
// ...
end;
finally
Formdata.Free;
LResponseStream.Free;
end;
end;
|
|
Zitat
|