作者NoobImage (老人家)
看板C_and_CPP
標題Re: [問題] 動態配置記憶體
時間Thu Feb 12 17:25:25 2009
※ 引述《PcGrek (PcGrek)》之銘言:
: 推薦另一種動態配置的寫法,
: 用這種方法配出來的記憶體區塊是連續的,
: 釋放記憶體時簡單,也可以用 a[x][y] 這種型式的定址法。
: double** mat = (double**)malloc( h*sizeof(double* )+
: w*h*sizeof(double));
: double* x = (double* )(mat + h);
: for(int y = 0; y!=h ; ++y, x+=w )
: mat[y] = x;
: free(mat);
解釋一下嗎? P大
double** mat = (double**)malloc( h*sizeof(double* )+
w*h*sizeof(double));
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
產生一組 double**型態 大小 h個(double*) + w*h個(double)
我們不是要 w*h*(double)就好了嗎?
一個double mat[h][w]他的大小 不就只有 h*w*(double)
那h*sizeof(double* ) 不就多配置了?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.64.88.58
※ 編輯: NoobImage 來自: 203.64.88.58 (02/12 17:26)
※ 編輯: NoobImage 來自: 203.64.88.58 (02/12 17:26)
推 HudsonE:找張紙畫一下圖你就懂了 02/12 17:27
※ 編輯: NoobImage 來自: 203.64.88.58 (02/12 17:27)
→ NoobImage:不會畫 02/12 17:31
※ 編輯: NoobImage 來自: 203.64.88.58 (02/12 17:36)