c - cJSON_Delete() 和 cJSON_free()
问题描述
我还是 cJSON 库的新手,我不能完全理解 cJSON_Delete() 和 cJSON_free() 的用途,
- 是否有任何文档准确描述了应该发布哪些功能,以及何时使用 cJSON_free() 以及何时使用 cJSON_Delete()。
- cJSON_InitHooks() 的用途是什么以及如何在我的代码中使用它。
- 每次我声明一个变量
cJSON *Variable;
时,我是否需要释放它以最小化内存使用量,否则它会自行释放?
谢谢!!
解决方案
快速浏览自述文件和头文件显示:
来自信:没有,该项目似乎没有提供此类文件。
无论如何,
cJSON_free()
如果你不打电话,你就不需要打电话cJSON_malloc()
。它更像是一个帮助函数,让您调用free()
和malloc()
挂钩函数。您需要调用
cJSON_Delete()
从任何分配函数(如解析器)收到的任何 cJSON 对象。
的目的
cJSON_InitHooks()
是为库提供您自己的内存分配函数。如果您不想使用默认函数或者如果您使用没有(工作)malloc()
和的目标,这可能会很有趣free()
。这样的声明不会为 cJSON 对象分配内存。如果没有获取到这样的对象,就无法调用
cJSON_Delete()
成功。通过调用cJSON_Delete()
,例如由其中一个解析器分配的内存将被释放。
似乎您需要了解指针和动态内存分配才能正确使用此库。这是独立于这个库的相当基本的 C 东西。
但是,阅读提供的介绍(尤其是示例),如果有疑问,来源也会有所帮助。
推荐阅读
- css - Vala - Gtk 标签悬停样式 css
- jquery - JQuery Autocomplete 与 IE7 的兼容性
- javascript - Kendo Grid - vendor.js SCRIPT1002:语法错误
- php - PHP:通过 URL 获取外部网站的主机名(确定主机名是否包含“www”)
- sql - 如何每天获取每个班次的数据
- java - JLabel 忽略 setBounds 方法
- node.js - 尝试运行 npx create-react-app myapp 时面临的问题
- vb.net - 根据工作班次持续时间添加迄今为止的小时数
- javascript - IP地址的最快哈希+盐是什么?(Node.JS)
- sql - 如何在 PostgreSQL 查询中按数组值搜索