1,594
社区成员
发帖
与我相关
我的任务
分享
procedure TForm2.Button1Click(Sender: TObject);
var
JSONObject: TJSONObject;
LItem: TJSONValue;
LJPair: TJSONPair;
weather: TJSONArray;
StrJson: String;
result: String;
i: Integer;
begin
JSONObject := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(StrJson), 0) as TJSONObject; // 创建JSONObject
JSONObject := (JSONObject.GetValue('results') as TJSONArray).Get(0) as TJSONObject; // 指向JSONObject
weather := JSONObject.GetValue('weather_data') as TJSONArray; // 指向JSONObject
......
weather.Free; // weather 指向JSONObject 释放了JSONObject
JSONObject.Free; // 前一句已释放,再次释放出现内存错误
// 前二句只能用一个,建议删除weather.Free;
end;
如果这个泄露是固定的几个字节,我一般是不管的。只要不是自己写的代码造成的,查起来麻烦,改起来更麻烦。[/quote]
不要小看那几个字节,如果用到是你的数据,可能就不是几个字节了,还是我代码是想要循环去获取数据的, 时间久了, 泄漏的内存很快就程序out of momey 了。。 所以这个要想办法解决。。
weather.Free; // weather 指向JSONObject 释放了JSONObject
JSONObject.Free; // 前一句已释放,再次释放出现内存错误
// 前二句只能用一个,建议删除weather.Free;
无论释放哪一个, 最终内存报告,都是有泄漏的。
如果这个泄露是固定的几个字节,我一般是不管的。只要不是自己写的代码造成的,查起来麻烦,改起来更麻烦。