[問題] 動態記憶體配置

看板C_and_CPP作者 (台大角落)時間7年前 (2017/01/21 15:30), 編輯推噓2(316)
留言10則, 6人參與, 最新討論串6/6 (看更多)
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://www.ptt.cc/bbs/C_and_CPP/M.1484983829.A.AA9.html

01/21 15:41, , 1F
delete是對記憶體位置 你不去delete 就會一直在那邊
01/21 15:41, 1F

01/21 15:42, , 2F
接return value的 用smart pointer包起來 確保不用時
01/21 15:42, 2F

01/21 15:43, , 3F
自動釋放
01/21 15:43, 3F

01/21 16:42, , 4F
感覺... 直接試試看 或是把記憶體位址印出來看
01/21 16:42, 4F

01/21 17:55, , 5F
不會。可以。正常,通常文件會提醒你要 free
01/21 17:55, 5F

01/21 21:15, , 6F
感謝
01/21 21:15, 6F

01/21 21:33, , 7F
這裡也有一個做法是類似給 FILE* 的 fopen/fclose 函數對
01/21 21:33, 7F

01/21 21:34, , 8F
索取跟釋放資源時各使用一個特定函數
01/21 21:34, 8F

01/21 21:34, , 9F
這樣 free 就能寫在釋放函數裡面了
01/21 21:34, 9F

01/24 22:51, , 10F
聽起來用smart pointer是最佳解了
01/24 22:51, 10F
文章代碼(AID): #1OWmuLgf (C_and_CPP)
文章代碼(AID): #1OWmuLgf (C_and_CPP)