cjson記憶體洩漏問題注意事項

2021-10-07 22:14:31 字數 937 閱讀 4466

1.申請了記憶體沒有釋放 造成記憶體申請失敗,下面記錄下使用的注意問題

(1)使用root = cjson_parse(text);

//將字串轉成json格式,函式中申請了一塊記憶體給root  所以在最後要釋放root

cjson_delete(root ); //釋放cjson_parse()分配出來的記憶體空間

(2)使用out = cjson_print(root);(含有cjson_printunformatted函式)

//函式將json資料轉成字串,這個函式內申請了一段記憶體給out,所以使用完out後也要釋放

由於out不是json指標的資料格式,使用cjson_free(out);釋放即可

(3)使用cjson *new_json_str = cjson_create**(str);

//將乙個字串轉成乙個json物件,函式裡面也涉及了記憶體分配,用完以後也要釋放cjson_delete(new_json_str );

若cjson *new_json = cjson_create**(str)建立後,通過cjson_additemtoobject( json, "test", new_json );(或者cjson_additemtoarray),加入到陣列或者object中,不需要單獨釋放new_json ,刪除json時被新增的item(此處為申請的new_json)同時也會被刪除。

注意:cjson_delete( ) ,cjson_free ( ) 要區分使用,json格式的使用cjson_delete  ,指標格式使用cjson_free,對應關係如下:               

申請記憶體:

cjson_parse

cjson_create 

cjson_print

釋放記憶體:

cjson_delete 

cjson_delete

cjson_free

開發應用時避免記憶體洩漏的注意事項

1 資料庫的cursor沒有關閉 2 構造adapter沒有使用快取contentview 衍生的listview優化問題 減少建立view的物件,充分使用contentview,可以使用靜態類來處理優化getview的過程 3 bitmap物件不使用時採用recycle 釋放記憶體 4 activ...

cJSON庫使用 特別注意事項

cjson的簡單使用 stm32移植 cjson打包功能使用 案例 特別注意事項 在前面的文章中,我們對cjson進行了一些簡單分析,包括解析 打包這兩種最常用功能,cjson的移植相對簡單,但是在使用的時候,還是有一些特別需要注意的地方的,這 主要是因為 cjson庫 中的一些函式會進行記憶體申請...

cJson記憶體洩漏 free不掉

1.問題描述 使用cjson,直接賦值貼上官網的歷程,發現free out 根本釋放不掉記憶體。當然也有可能我看的這個官網是假的。問題復現 發現root json data json 和 out都沒有被釋放,然後我就新增root json data json的釋放函式。結果如下圖,結果分析 root...