cJson內存泄漏 free不掉

1.問題描述:使用cJson,直接賦值粘貼官網的歷程,發現free(out);根本釋放不掉內存。當然也有可能我看的這個官網是假的。

問題復現

發現root_json ,data_json 和 out都沒有被釋放,然後我就添加root_json ,data_json的釋放函數。

結果如下圖,結果分析:root_json 和 data_json被成功釋放了,但是out還是沒有被釋放

2.問題解決:cJSON_CreateObject創建的指針,需要使用cJSON_Delete刪除,cJSON_Print賦值的指針需要free釋放。

3.其他使用記錄

生成的數據使用時,轉換成字符串,如果使用char *out = cJSON_Print(root_json);的話,打印出out的時候會出現很多空格回車類似的,都會佔用很大的空間。

我們可以使用char *out = cJSON_PrintUnformatted(root_json);這樣生成的字符串就沒有了空格回車啥的了,很緊湊