gpt4 book ai didi

c - 使用 JSON-C 解析的字符串的最大大小

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:04 25 4
gpt4 key购买 nike

我是 JSON-C 的新手,我需要知道可以使用 json_tokener_parse 解析的字符串是否有任何大小限制。

所以基本上我需要知道当我使用 json_object * jobj = json_tokener_parse(string) 时,可以传递的字符串是否有任何大小限制。

提前致谢。

while (ret==0)
{
if((ret = dbcp->c_get(dbcp, &keyd, &datad, DB_NEXT))==0){

if(vflag) {
printf("broadcast_mode: after dbcp->c_get(dbcp, &keyd, &datad, DB_NEXT)\n");
}

my = (myrecord *) datad.data;

if(vflag) {
printf("broadcast_mode: after my = (myrecord *) datad.data\n");
}

if(vflag) {
printf("db: %d: key retrieved: data was %s, %d\n", *(int *)keyd.data,my->src, datad.size);
}
}
}
if(vflag) {
printf("broadcast_mode: dbp->c_get 2\n");
}


if ((ret = dbcp->c_get(dbcp, &keyd, &datad, DB_NEXT)) !=0)
{
if(vflag) {
dbp->err(dbp, ret, "DBcursor->get");
}
//goto err;
}

if(vflag) {
printf("broadcast_mode: dbp->c_close\n");
}

if ((ret = dbcp->c_close(dbcp)) != 0)
{
dbp->err(dbp, ret, "DBcursor->close");
//return (1);
}
ret = dbp->close(dbp, 0);

if(vflag) {
printf("broadcast_mode: json_tokener_parse(my->src)\n");
printf("broadcast_mode: address is %x,%d\n",(unsigned int)my->src,datad.size);
}


json_object * jobj = json_tokener_parse(my->src);

here when datad.size is 1024 i get segmentation fault and it works when size is 500

最佳答案

json-c 不使用任何固定大小的缓冲区,因此它仅受应用程序可以使用的内存量的限制。

这实际上是您可以从一个正确编写的库中得到的 - 使用固定缓冲区需要它们很大以避免长但不是非常长的 JSON 字符串出现问题,然后很可能仍然存在一些情况他们太小了。不要忘记他们会浪费大量内存的所有其他情况。

关于c - 使用 JSON-C 解析的字符串的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com