Re: [已解] allocate memory for 3 dim.
※ 引述《tropical72 (藍影)》之銘言:
→
03/24 22:56,
03/24 22:56
→
03/24 22:57,
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
03/25 23:33, 1F
→
03/26 00:01, , 2F
03/26 00:01, 2F
→
03/26 12:13, , 3F
03/26 12:13, 3F
→
03/26 12:14, , 4F
03/26 12:14, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):