作者kktata (kktata)
看板C_and_CPP
標題[問題] 有關delete與陣列
時間Sun Mar 12 21:03:53 2017
不好意思,我是剛學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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1489323836.A.2A6.html
1F:推 LPH66: 原則上可以但建議不要, 因為你不會時常檢查有沒有刪 03/12 21:12
2F:→ LPH66: 稍微好一點的方法是再寫一個負責刪的, 然後要刪時記得呼叫 03/12 21:12
3F:→ LPH66: 更好一點的是用一個類別把它封起來, 這裡你有 vector 能用 03/12 21:13
4F:→ LPH66: 不管如何, 這部份請去找你學程式的地方一定有說明 03/12 21:14
5F:推 loveflames: 這裡說一下,函數不能返回陣列,陣列不能是函數參數 03/12 21:15
6F:→ loveflames: 作為參數會轉成指標 03/12 21:16
7F:→ loveflames: 不過你可以傳陣列的參考 03/12 21:16
8F:推 loveflames: 回到主題,我覺得你可以參考RAII 03/12 21:22
9F:→ james732: 新手就會寫看起來這麼深奧的程式啊... 03/12 21:31
10F:推 loveflames: 先釐清函數怎麼用陣列,比delete時機重要多啦 03/12 21:35
11F:推 lovejomi: 這樣new 是錯的吧 03/13 09:52
12F:推 Sidney0503: 去看RAII+1 03/13 10:33
13F:推 loveflames: 話說初學者直接用vector最省事 03/13 12:16
14F:推 worcdlo: 我倒是覺得初學者就是要學著怎麼寫各種結構 vector刷 03/13 12:59
15F:→ worcdlo: LeetCode時再用就好 03/13 13:00
16F:推 ronin728: 如果要用純C風格,這函數應該還要再分開成分配資料用的 03/13 14:17
17F:→ ronin728: 還有計算處理資料用的,這樣分開會比較好 03/13 14:18
18F:→ grayStone: unique _ptr 03/13 22:19