下面的代碼會造成記憶體泄漏。正確的方法是什么?
JSONArray := TJSONArray.Create;
try
JSONArray :=
TJSONObject.ParseJSONValue(
TEncoding.UTF8.GetBytes(
'[{"username":"admin"},{"username":"developer"}]'
), 0
) as TJSONArray;
finally
JSONArray.Free;
end;
uj5u.com熱心網友回復:
問題是呼叫TJSONArray.Create. 您正在創建自己的TJSONArray物件,然后覆寫JSONArray指標以指向一個完全不同的TJSONArray物件,從而泄漏了您想要的原始物件Create。
所以,簡單地擺脫那個Create電話,你不需要它。您Free只需要ParseJSONValue()回傳的物件。
此外,您不需要將 JSON 字串轉換為位元組。 ParseJSONValue()有一個接受 astring作為輸入的多載。
嘗試這個:
JSONArray := TJSONObject.ParseJSONValue(
'[{"username":"admin"},{"username":"developer"}]'
) as TJSONArray;
try
// ...
finally
JSONArray.Free;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315583.html
