本節書摘來自異步社群出版社《從缺陷中學習c/c++》一書中的第6章,第6.9節,作者: 劉新浙 , 劉玲 , 王超 , 李敬娜 , ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
從缺陷中學習c/c++
代碼示例
現象&後果
用一個指針指向兩次動态配置設定的記憶體,但隻free一次,造成記憶體洩露。使用cppcheck工具檢測,可以得到類似下面的資訊:(error) memory leak: strb。
bug分析
func函數中申請了記憶體指派給strb, 然後在main函數中又動态配置設定了記憶體指派給strb。在free(strb)時,實際隻是釋放了最後一次動态申請的記憶體,func函數中申請的記憶體被漏掉了。第一次申請的記憶體沒有被釋放,造成記憶體洩露。
正确代碼
程式設計建議
這是一個小問題。兩次動态配置設定的記憶體,但隻free一次,造成記憶體洩露。記得申請釋放記憶體時要注意malloc和free配對,申請幾次釋放幾次。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。