作者ntucorner (台大角落)
看板C_and_CPP
標題[問題] 動態記憶體配置
時間Sat Jan 21 15:30:26 2017
int *reduce(int a,int*p) {
}
我想寫這樣的一個函式
輸出為指標 輸入是整數a 跟 一個指標p
根據a 我將配置一個指標r 裝入指標p的某些內容
但我想問 我用new配置r 後
我將return r 給另一個函式用
但我該在甚麼時候delete r
因為在回傳前不能delete 傳了之後又delete不了 變成兩難
1.是函式回傳後r自動會釋放嗎
2.或是在main裡面也能delete r(感覺他會找不到r)
3.我應該換個寫法
感謝大家!
--
Sent from my Windows
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.44.209
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1484983829.A.AA9.html
1F:→ bachelorwhc: delete是對記憶體位置 你不去delete 就會一直在那邊 01/21 15:41
2F:→ bachelorwhc: 接return value的 用smart pointer包起來 確保不用時 01/21 15:42
3F:→ bachelorwhc: 自動釋放 01/21 15:43
4F:噓 grayStone: 感覺... 直接試試看 或是把記憶體位址印出來看 01/21 16:42
5F:推 Bencrie: 不會。可以。正常,通常文件會提醒你要 free 01/21 17:55
6F:→ ntucorner: 感謝 01/21 21:15
7F:推 LPH66: 這裡也有一個做法是類似給 FILE* 的 fopen/fclose 函數對 01/21 21:33
8F:→ LPH66: 索取跟釋放資源時各使用一個特定函數 01/21 21:34
9F:→ LPH66: 這樣 free 就能寫在釋放函數裡面了 01/21 21:34
10F:推 eye5002003: 聽起來用smart pointer是最佳解了 01/24 22:51