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

标签 c json

我是 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/

相关文章:

python - 如何在没有 token 或访问控制的情况下从 userId(pk) 获取 instagram 用户个人资料详细信息?

android - java.lang.String 类型的值 <br 无法在 Android 上转换为 JSONObject

java - 如何将 MySQL 表数据插入 JSONArray?

java - android - 在带有滚动的可扩展 ListView 中加载json

python - 从Python到C

c - 我如何在 C 中 chattr +i 一个打开的文件描述符?

javascript - 来自 Foreach 循环的动态幻灯片

c - 如何使用gcc将homepath导入c程序

c - 初始化代码放在哪里更好,在循环之前还是在循环内部?

c++ - 为什么 March=native 在 Apple M1 上不起作用?