cJSON_Delete() 和 cJSON_free()

cJSON_Delete() and cJSON_free()

我对 cJSON 库还是个新手,我不能完全理解 cJSON_Delete() 和 cJSON_free(),

的用法
  1. 是否有文档准确描述应该发布哪些功能,以及何时使用 cJSON_free() 以及何时使用 cJSON_Delete()。
  2. 什么是 cJSON_InitHooks() 目的以及如何在我的代码中使用它。
  3. 每次我声明一个变量时cJSON *Variable;我是否需要释放它以最小化内存使用量或者它会自行释放??

谢谢!!

快速浏览自述文件​​和头文件显示:

  1. 来自来信:没有,项目好像没有提供这样的文件。

    • 反正不叫cJSON_malloc()就不用叫cJSON_free()了。它更像是一个辅助函数,可以让您调用 free()malloc() 挂钩函数。

    • 您需要为从任何分配函数(如解析器)收到的任何 cJSON 对象调用 cJSON_Delete()

  2. cJSON_InitHooks()的目的是为库提供自己的内存分配函数。如果您不想使用默认函数,或者如果您使用没有(工作)malloc()free().

    的目标,这可能会很有趣
  3. 这样的声明不会为 cJSON 对象分配内存。如果不获取这样的对象,则无法成功调用cJSON_Delete()。例如,通过调用 cJSON_Delete(),由解析器之一分配的内存将被释放。

看来您需要了解指针和动态内存分配才能正确使用该库。这是独立于该库的相当基本的 C 语言。

但是,阅读提供的介绍(尤其是示例),如果有疑问,来源也会有所帮助。