作者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)
1F:推 HudsonE:找张纸画一下图你就懂了 02/12 17:27
※ 编辑: NoobImage 来自: 203.64.88.58 (02/12 17:27)
2F:→ NoobImage:不会画 02/12 17:31
※ 编辑: NoobImage 来自: 203.64.88.58 (02/12 17:36)