Re: [已解] allocate memory for 3 dim.

看板C_and_CPP作者 (藍影)時間13年前 (2012/03/25 10:42), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《tropical72 (藍影)》之銘言:

03/24 22:56,
多幾個參數傳進去, new3d call new2d, 這樣你要再來個
03/24 22:56

03/24 22:57,
new4d 也不是問題
03/24 22:57
我做起來還是卡卡的 orz 純粹興趣想討論而已,願以稅前 5000P * 2 ( O(n) allocate / O(1) allocte ) 予以不吝解答之版友 (有點少, 但請不吝指導...) 在避開碎片化問題,一種是 allocate n 次, 每次將所有指標都接起來, 初步是這麼寫 char* newnd(size_t *vDim, /* 每維個數 */ size_t CountOfDim, /* 維度個數 */ size_t SizeOfEle, /* 元素大小 */ char** pre_ptr) /* 上一維度接好的 pointer */ { if(CountOfDim==0) return NULL; else if(CountOfDim==1) { *pre_ptr = (char*)malloc(SizeOfEle * vDim[0]); return *pre_ptr; } else { /* 卡卡的 */ } } char* 部份我想用 void* 會比較恰當。 假設 CountOfDim = 5, vDim={2,5,4,3,6}, 代表要配置的是 int array[2][5][4][3][6]; 弄了半天還是接不起來。 另一種方式是事先計算所有 pointer size 和 elesize 全都算完, 再慢慢接起來。不過不論是哪種方法,試了一陣還是試不出來, 不知版友們是否能提點,謝謝各位。 -- 想多問一問,若為 void* newnd(....); caller 端轉形成 int ******arr = (int******)newnd(....); 應是合理的吧?? -- 我知道 ~ 但別說出來 , 說出來讓人感到特別難過... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.161 ※ 編輯: tropical72 來自: 180.177.76.161 (03/25 18:47)

03/25 23:33, , 1F
不確定有沒有bug... http://codepad.org/M02G32Qv
03/25 23:33, 1F

03/26 00:01, , 2F
void** ...
03/26 00:01, 2F

03/26 12:13, , 3F
感謝 chubiei 回覆, (想不到用 for 更適當 ), P 幣
03/26 12:13, 3F

03/26 12:14, , 4F
已寄出, 請查收, 再次感謝您 !!
03/26 12:14, 4F
文章代碼(AID): #1FRlQUCs (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FRlQUCs (C_and_CPP)