资产监测设备开发中关于cJSON多次生成JSON字符串时死机问题

Posted 瑞奇Ricky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资产监测设备开发中关于cJSON多次生成JSON字符串时死机问题相关的知识,希望对你有一定的参考价值。

近期,笔者在开发资产监测设备的过程中,该设备应用了多项技术帮助货物实现精准定位、运动状态监测、环境温度湿度监测等。其中资产监测设备还添加了拆箱报警等功能,为用户保障资产的安全性提供解决方案。

资产监测设备的运用范围广泛,包括了:农业现代化、畜牧养殖、大型车间、仓库管理、环境监测、交通运输等行业。将的资产监测设备与货物处于同一个环境下,保持资产监测设备的数据精准度。然后通过资产监测设备将相关数据同步到云端后台,用户可以根据云端后台的信息同步了解产品的位置、运动状态与环境状况等。同时为了资产监测设备更多功能的技术实现,开发人员在编写代码过程中也遇到了一些技术难题。例如cJSON多次生成JSON字符串的时候死机问题。

针对此问题,开发人员提出以下解决方案:
JSON是一种轻量级的文本数据交换格式,易于让人阅读。同时也易于机器解析和生成。
cJSON是一个轻量级的json解析库,使用非常简单。其是用c语言编写,文件组成只有 一个.c文件和一个.h文件,使用的时候只需要包含这两个文件即可。笔者在项目中也使用的这两个文件用于生成和解析JSON。
笔者在实际使用过程中,发现函数初次运行的时候可以生成完整的json字符串,但是函数运行几次之后设备就会死机。后面对cjson源码进行研究之后发现:将生成的JSON反序列化的时候,会通过malloc申请一个内存用于存放所生成的字符串,但是后续没有调用free释放这段内存,导致内存溢出。后来查看官方文件,这段内存是要求开发人员自己释放的。
如图:红框内就是主动释放的语句

结论:开发人员在开发类似的资产监测设备的过程中,为了保障开发过程中的代码平稳流畅地运行,在遇到cJSON多次生成JSON字符串的时候死机问题时可以参考以上的方式。

以上是关于资产监测设备开发中关于cJSON多次生成JSON字符串时死机问题的主要内容,如果未能解决你的问题,请参考以下文章

资产监测设备中关于ADC128S052的时序要求

资产监测设备中关于移远模块File功能介绍

技术科普资产监测技术中关于TEA解密算法

资产监测设备中关于供电不稳导致MCU重启问题

资产跟踪设备中关于UTF8到UCS2转换

资产监测技术中关于USIM卡座在PCB layut设计中注意事项浅谈