天天看點

《從缺陷中學習C/C++》——6.9 重複申請記憶體未釋放

本節書摘來自異步社群出版社《從缺陷中學習c/c++》一書中的第6章,第6.9節,作者: 劉新浙 , 劉玲 , 王超 , 李敬娜 , ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

從缺陷中學習c/c++

代碼示例

現象&後果

用一個指針指向兩次動态配置設定的記憶體,但隻free一次,造成記憶體洩露。使用cppcheck工具檢測,可以得到類似下面的資訊:(error) memory leak: strb。

bug分析

func函數中申請了記憶體指派給strb, 然後在main函數中又動态配置設定了記憶體指派給strb。在free(strb)時,實際隻是釋放了最後一次動态申請的記憶體,func函數中申請的記憶體被漏掉了。第一次申請的記憶體沒有被釋放,造成記憶體洩露。

正确代碼

程式設計建議

這是一個小問題。兩次動态配置設定的記憶體,但隻free一次,造成記憶體洩露。記得申請釋放記憶體時要注意malloc和free配對,申請幾次釋放幾次。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀