keil:Jansson中使用free释放内存,仍出现内存泄漏现象

时间:2024-04-04 19:45:25

keil:Jansson中使用free释放内存,仍出现内存泄漏现象

问题现象

json函数

keil:Jansson中使用free释放内存,仍出现内存泄漏现象
用malloc函数动态分配内存,send_JSONpack函数用来打印字符串。
keil:Jansson中使用free释放内存,仍出现内存泄漏现象
主函数里只有两句,141行不停打印JSON字符串,142行延时2秒。

串口打印结果

keil:Jansson中使用free释放内存,仍出现内存泄漏现象
这里大概打印主函数循环打印19次,程序就会卡死(不卡死,malloc也会申请不到内存,同样打印不出字符串)。

解决办法

函数改动

keil:Jansson中使用free释放内存,仍出现内存泄漏现象
这里定义一个数组(大小自己定,足够发字符串就行了),再定义一个指针指向数组,用以接收dumps函数生成的字符串。
keil:Jansson中使用free释放内存,仍出现内存泄漏现象
jansson_firstpack_create做如上改动

串口打印正常

keil:Jansson中使用free释放内存,仍出现内存泄漏现象
之前担心会不会发送不同长度的json包,比如先发送长包,在发送短包,USART2TxBuf会还有长包的一段字符,后来发现不影响。