我正在阅读有关 JavaScript 的数据,并像这样将 Jsonstring 传递{"data_size":500, "array":[0,0,0,0,..,0,0]}
给网络服务器。数组中的数字可以是 0 到 4294967295 之间的任何数字。
在 Mongoose 网络服务器上,我使用 lib rapidjson 来处理 Jsonstring。因此,我创建了一个Document d并使用以下命令将“jsonstring”中的值读取到一个 uint32_t 数组中:
#include "rapidjson/document.h"
int i_data_size=0;
Document d;
conn->content[conn->content_len]=0; //to zero terminate
if (d.Parse(conn->content).HasParseError())
{
//Error
}
else
{
Value& s = d["data_size"];
i_data_size=s.GetInt();
uint32_t *Data=NULL;
Data=new uint32_t[i_data_size];
Value& a = d["array"];
for(SizeType i=0;i<a.Size();i++)
{
Data[i]=a[i].GetUint();
}
}
conn->content
包含 json char*。
当我发送时:{"data_size":500, "array":[0,0,0,0,..,0,0]}
一切正常。但有时,不是每次,当 a 数字变大时,像这样:
{"data_size":500, "array":[123,222,0,0,..,0,0]}
我得到错误:
free():下一个尺寸无效(正常)