Re: [語法] 宣告動態二維陣列....

看板C_and_CPP (C/C++)作者 (Washi_Keelar)時間16年前 (2010/05/24 08:00), 編輯推噓6(604)
留言10則, 6人參與, 最新討論串2/2 (看更多)
是沒有問題, 只是你這樣的作法, memory 是不連續的 我的話我是這樣用: 先 new 一大塊, 然後再 assign 到對的位置 // create int **rgArray = new int *[M]; rgArray[0] = new [M * N]; for(int x = 1; x < M; x++){ rgArray[x] = rgArray[x - 1] + N; } // delete delete [] rgArray[0]; delete [] rgArray; 不知道有沒有更棒的方法 ※ 引述《GZ79 (ミⒼⓏ❼❾)》之銘言: : int A[M][N]; : 請利用new的方式,動態產生這個二維陣列; : 接著利用delete釋放所要的記憶體。 : ============================================== : int **p=new int *[M]; : for(int i=0; i<M; i++) : p[i] = new int [N]; : // delete : for(int i=0; i<M; i++) : delete [] p[i]; : delete [] p; : =============================================== : 最上面是我要問的題目,然後中間是我寫的 : 請問這樣寫的答案,有沒有問題啊,這樣是不是就是用new 宣告動態二維陣列啊 : 因為 不是很確定, 所以來版上 請教各位 大大們 : 謝謝 -- ◢██████ █◤▂▃ █ █▌ ° █ ◢ ◢█◣ ◢█◣ █ ◢██ █◢◣ ◥█████ █◢◤ █▅█ █▅█ █ █ █ █◤ ███◤ █◥◣ █ █ █ █ █ █ ◥█◤ █ ◥◣◥█◤ ◥█◤ ██ █◤█◣ █ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 72.130.182.217 ※ 編輯: keelar 來自: 72.130.182.217 (05/24 08:10)

05/24 10:18, , 1F
05/24 10:18, 1F

05/24 10:22, , 2F
把int*與int放在一起new, 就只需要new和delete一次了:)
05/24 10:22, 2F

05/24 11:03, , 3F
int*和int大小不一定相同 雖然這可以解決 但滿麻煩的
05/24 11:03, 3F

05/24 11:04, , 4F
我是覺得不太需要為了少一次new就付出這種代價
05/24 11:04, 4F

05/24 11:09, , 5F
不相同也沒關係吧?? 只是new的base要用BYTE橋好先後或
05/24 11:09, 5F

05/24 11:09, , 6F
注意一下alignment; 不過, 的確是不需要為了少一次new
05/24 11:09, 6F

05/24 11:10, , 7F
搞得這麼麻煩啦XD
05/24 11:10, 7F

05/24 20:44, , 8F
是 keelar 耶!
05/24 20:44, 8F

05/24 21:07, , 9F
是說這個問題根本就快爛了,原PO其實爬文就好了 XD
05/24 21:07, 9F

05/24 22:05, , 10F
感謝大大的解說~~
05/24 22:05, 10F
文章代碼(AID): #1B-S6ieL (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1B-S6ieL (C_and_CPP)