json -c json_object_to_json_string 释放内存时

2023-11-22

我正在使用 json-c 库将 json-object 发送到客户端。我注意到没有本机函数来释放 json_object_to_json_string 分配的内存。该库会自动释放它吗?或者我必须“free(str)”以避免内存泄漏? 我试图阅读它的源代码,但它让我失去知觉......所以有人知道这一点吗?


看来你不需要手动释放它。

我看到这个缓冲区来自 json_object 内部(参见该函数的最后一行):

const char* json_object_to_json_string_ext(struct json_object *jso, int flags)
{
    if (!jso)
        return "null";

    if ((!jso->_pb) && !(jso->_pb = printbuf_new()))
        return NULL;

    printbuf_reset(jso->_pb);

    if(jso->_to_json_string(jso, jso->_pb, 0, flags) < 0)
        return NULL;

    return jso->_pb->buf;
}

删除函数释放该缓冲区:

static void json_object_generic_delete(struct json_object* jso)
{
#ifdef REFCOUNT_DEBUG
  MC_DEBUG("json_object_delete_%s: %p\n",
       json_type_to_name(jso->o_type), jso);
  lh_table_delete(json_object_table, jso);
#endif /* REFCOUNT_DEBUG */
  printbuf_free(jso->_pb);
  free(jso);
}

重要的是要理解该缓冲区仅在对象有效时才有效。如果对象的引用计数达到 0,则该字符串也会被释放,如果在释放后使用它,则结果是不可预测的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json -c json_object_to_json_string 释放内存时 的相关文章

随机推荐

  • 使用R中的gsub替换数据帧列中的特定值

    我的 data frame 如下 gt df ID Value A 001 DEL 1 7 35 8 1 A 002 INS 4l 5 74 d B 023 0 C 891 2 D 787 8 E 865 DEL 3 65 1s b 我想将
  • JPopupMenu 上的 JComboBox

    我正在尝试使用复合 Swing 组件作为菜单的一部分 除了一个细节之外 一切都运行良好 该组件包含JComboBoxes 每当用户单击其中之一打开其下拉菜单时 下拉菜单将打开 但菜单会消失 是否可以使菜单保持打开状态JComboBox被点击
  • 使用 .NET 远程读取事件日志

    我想读取远程计算机上的事件日志以检查测试期间是否有错误 这是一些相关代码 public bool CheckEventLogs DateTime start EventLog myEventLog new EventLog CustomLo
  • 宽度以百分比设置的“position:fixed”侧边栏?

    I ve successfully used the beautiful Susy grid system to create a responsive layout similiar to the one of WebDesignerWa
  • 如何在点击android中的edittext时显示自定义键盘

    我的应用程序中有一个自定义键盘 问题是如何在单击 edittext 时播放此键盘 我使用 setonfocuschangre 侦听器 现在当 edittext 焦点更改时会出现自定义键盘 但我想在每次单击 edittext 时显示此键盘 我
  • 什么是 NullReferenceException,如何修复它?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我有一些代码 当它执行时 它会抛出一个NullReferenceException 说 你调用的对象是空的 这是什么意思 我该如何修复此错误 原因是什么 底线
  • Rails - 测试装置错误 NoMethodError:nil 的未定义方法“类型”:NilClass

    我在运行使用具有模型之间关联的装置的测试时遇到问题 这是我一运行就收到的错误rake test ERROR test truth SevenPortfolioTest 0 005154775 test truth SevenPortfoli
  • 如何将 MongoDB 文档转换为 JSON 对象

    我正在尝试使用从查找查询返回的 MongoDB 文档作为 NodeJS 中的请求正文发出发布请求 但是在服务器上我收到错误 无效的 JSON 以下是我尝试发布的文档 id ObjectId 5739a6bf3f1b41477570dc89
  • 任意分隔符/转义字符处理的最佳算法是什么?

    令我有点惊讶的是 网上没有任何关于此问题的信息 而且我不断发现这个问题比我想象的要棘手一些 规则如下 您从分隔 转义数据开始将其拆分为数组 分隔符是一个任意字符 转义字符是任意一个字符 分隔符和转义字符都可以出现在数据中 正则表达式很好 但
  • 组织Android SDK的代码文件/XML文件

    有人可以提供一些组织我的项目以使其干净的策略吗 假设我有很多活动 将它们全部放入一个单独的包中 同时将其他类 例如自定义适配器 放入另一个包中以更好地分离 逻辑 是否很好 另外 在为布局创建 XML 文件时 如果我有一些用于某些活动的布局和
  • 修复 CSS 流体网格中的子像素舍入问题

    我正在尝试创建一个流畅的 CSS 网格 它适用于 Firefox 和 IE8 但不适用于 Safari Chrome Opera 其中子像素舍入问题变得可见 http jsfiddle net bJKQ6 2 column float le
  • 为什么 BinaryReader.ReadUInt32() 会反转位模式?

    我正在尝试使用 BinaryReader 类读取二进制文件 并且我需要将其作为 UInt32 块读取 然后进行一些位移等操作 但是 由于某种原因 当我使用 ReadUInt32 方法时 位顺序会颠倒 例如 如果我有一个文件 其中前四个字节的
  • 传递配置参数以在 R 中安装包

    我正在尝试安装一个包R来自 CRAN 存储库 我必须在配置阶段 但我不知道如何做到这一点install packages gt install packages Rmpfr checking mpfr h usability no chec
  • 在 Vue.js 中,如何查找哪些数据更改导致组件重新渲染?

    在 Vue js 中 当某些数据发生变化时 组件会重新渲染 更新 有时重新渲染频率太频繁 我想找出哪些数据的更改导致了此重新渲染 如何找出导致重新渲染的更改数据 Using 深度差异和一个简单的观察程序 您可以轻松找到虚拟机数据的先前副本之
  • 为什么“tail”不能截断日志文件?

    我正在尝试使用 cron 脚本管理日志文件大小 我基本上想每晚删除日志文件中除最后 2000 行之外的所有内容 我正在尝试运行此命令 但它似乎正在清空整个文件而不是执行我想要的操作 tail 2000 日志文件 txt gt 日志文件 tx
  • CakePHP 数据库表,缺少默认数据源

    I found this类似的问题 但我的问题不同 我将 CakePHP 2 2 应用程序移至另一台服务器 迁移前不存在任何问题 迁移后大多数事情都运行良好 我可以访问我的大部分数据库表等 但是当我尝试访问我的其中一个表时 我收到此错误 E
  • 将 Sqlite BigInt 转换为日期

    我有一个 Sqlite 数据库 用作 Quartz net 调度程序作业的 ado net 作业存储 在一个表中 名为 START TIME 的列的类型为 big int 有没有办法将 bigint 转换或转换为日期值 我希望能够查询数据库
  • JSON - 无法使用 Jackson 序列化对象内的 JSONObject

    我有以下课程 class A String abc String def appropriate getters and setters with JsonProperty Annotation 我打电话给Jacksons objectMa
  • 如何防止未启用的 EditText 出现键盘

    我的活动有一个EditText据称 在用户单击屏幕的编辑按钮之前 该内容是不可编辑的 I did edit setEnabled false 但仍然会为用户显示一个键盘 并且可以将值添加到EditText通过键盘在屏幕上显示 即使屏幕可能看
  • json -c json_object_to_json_string 释放内存时

    我正在使用 json c 库将 json object 发送到客户端 我注意到没有本机函数来释放 json object to json string 分配的内存 该库会自动释放它吗 或者我必须 free str 以避免内存泄漏 我试图阅读