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);這樣生成的字串就沒有了空格回車啥的了,很緊湊
cjson記憶體洩漏問題注意事項
1.申請了記憶體沒有釋放 造成記憶體申請失敗,下面記錄下使用的注意問題 1 使用root cjson parse text 將字串轉成json格式,函式中申請了一塊記憶體給root 所以在最後要釋放root cjson delete root 釋放cjson parse 分配出來的記憶體空間 2 使...
free 顯示記憶體
free命令可以顯示當前系統未使用的和已使用的記憶體數目,還可以顯示被核心使用的記憶體緩衝區。free 選項 b 以byte為單位顯示記憶體使用情況 k 以kb為單位顯示記憶體使用情況 m 以mb為單位顯示記憶體使用情況 o 不顯示緩衝區調節列 s 間隔秒數 持續觀察記憶體使用狀況 t 顯示記憶體總...
記憶體洩漏和記憶體溢位 記憶體洩漏和記憶體溢位
記憶體洩漏 是指申請的記憶體空間使用完畢之後未 一次記憶體洩露危害可以忽略,但若一直洩漏,無論有多少記憶體,遲早都會被占用光,最終導致程式crash。因此,開發中我們要盡量避免記憶體洩漏的出現 記憶體溢位 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使用。通俗理解就是記憶體不夠用了,通常在執行大...