[問題] 有關delete與陣列

看板C_and_CPP作者 (kktata)時間8年前 (2017/03/12 21:03), 編輯推噓9(909)
留言18則, 8人參與, 最新討論串1/2 (看更多)
不好意思,我是剛學C++的新手,問題可能很基本 我寫了一個函式大概長這樣 int* Preprocess(int a[], int n) { int* sparse = new int[n][floor(log(n)/log(2) )+ 1]; ................... return sparse; } 請問應該在什麼時候用delete,可以在函式外面嗎 還有我查了很多回傳陣列的方法,有些說這個寫法不好,請問通常應該會怎麼寫 先謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.183.154 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1489323836.A.2A6.html

03/12 21:12, , 1F
原則上可以但建議不要, 因為你不會時常檢查有沒有刪
03/12 21:12, 1F

03/12 21:12, , 2F
稍微好一點的方法是再寫一個負責刪的, 然後要刪時記得呼叫
03/12 21:12, 2F

03/12 21:13, , 3F
更好一點的是用一個類別把它封起來, 這裡你有 vector 能用
03/12 21:13, 3F

03/12 21:14, , 4F
不管如何, 這部份請去找你學程式的地方一定有說明
03/12 21:14, 4F

03/12 21:15, , 5F
這裡說一下,函數不能返回陣列,陣列不能是函數參數
03/12 21:15, 5F

03/12 21:16, , 6F
作為參數會轉成指標
03/12 21:16, 6F

03/12 21:16, , 7F
不過你可以傳陣列的參考
03/12 21:16, 7F

03/12 21:22, , 8F
回到主題,我覺得你可以參考RAII
03/12 21:22, 8F

03/12 21:31, , 9F
新手就會寫看起來這麼深奧的程式啊...
03/12 21:31, 9F

03/12 21:35, , 10F
先釐清函數怎麼用陣列,比delete時機重要多啦
03/12 21:35, 10F

03/13 09:52, , 11F
這樣new 是錯的吧
03/13 09:52, 11F

03/13 10:33, , 12F
去看RAII+1
03/13 10:33, 12F

03/13 12:16, , 13F
話說初學者直接用vector最省事
03/13 12:16, 13F

03/13 12:59, , 14F
我倒是覺得初學者就是要學著怎麼寫各種結構 vector刷
03/13 12:59, 14F

03/13 13:00, , 15F
LeetCode時再用就好
03/13 13:00, 15F

03/13 14:17, , 16F
如果要用純C風格,這函數應該還要再分開成分配資料用的
03/13 14:17, 16F

03/13 14:18, , 17F
還有計算處理資料用的,這樣分開會比較好
03/13 14:18, 17F

03/13 22:19, , 18F
unique _ptr
03/13 22:19, 18F
文章代碼(AID): #1OnKSyAc (C_and_CPP)
文章代碼(AID): #1OnKSyAc (C_and_CPP)