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

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

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