我的子函數返回值是一個指針,在子函數中我先用malloc定義了這個指針,然后return該指針。那在子函數里需要free嗎?如果在return之前free了 不是就不能return了所以我感覺只要主函數所有malloc都free了,就沒事。這個對嗎??
2 回答

SMILET
TA貢獻1796條經驗 獲得超4個贊
如果子函數需要return一個內部分配的空間,那么釋放就歸調用者來free了,否則內部free再返回已經是無效空間
不過一般不這樣做,一般誰分配誰釋放建議主函數分配傳入然后子函數自己往里面存東西,再由主函數負責釋放

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
C沒有自動釋放功能,需要手動free掉malloc的堆空間。如果malloc空間后忘記free就會造成內存泄露問題:內存泄露是一個比較麻煩的問題,要是malloc少量空間而不free,在測試階段很難發現,而投入生產中可能就會變成大量malloc而不free,內存空間沒了,然后程序就掛了
- 2 回答
- 0 關注
- 251 瀏覽
添加回答
舉報
0/150
提交
取消