纯c语言实现动态分配多维数组的方法

2008-3-10 13:25:24

最近在做网格任务调度算法的模拟实验的时候,需要用到比较达到数组,于是就需要学习用动态多维数组来进行内存的分配。

在网上找了些资料,好多是关于c++方面分配的,这里有一个c语言的分配方法。(转载自Fish-Bowl

普通的动态内存分配只能分配一维的数组:
例如:
#define ARRAY_SIZE    1024 ; 
unsigned char * pa = NULL ; 
pa = (unsigned char *)malloc(ARRAY_SIZE) ;
然后就可以pa[1], pa[0] ...当成一维数组操作了。
释放的时候:
free(pa) ; 

但是,很多情况下,我们需要动态的二维数组,乃至多维数组,例如矩阵计算,有限元分析,三维实体建模等等。那么如何利用普通的c语言,实现多维数组呐?

动态二维数组:
#define ARRAY_SIZE     20*20
//这里是20x20的矩阵
unsigned char (*matrix_1)[20] ;
matrix_1 = (unsigned char (*)[20])malloc(ARRAY_SIZE) ; 
然后就可以matrix_1[0][0], matrix_1[0][1]。。。这样使用了。释放方式同一维数组。

动态的三维数组:
#define ARRAY_SIZE     5*32*32
//定义了5桢,每桢是32x32的矩阵 
unsigned char (*frame)[32][32] ;
frame = (unsigned char (*)[32][32])malloc(ARRAY_SIZE) ; 
然后就可以frame[0][0][0]之类的直接使用了,释放方法同上。

这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了。

c++的动态分配内存看下一篇文章

点击这里获取该日志的TrackBack引用地址
上一篇: 最后一个学期~下一篇: c++中多维数组动态分配
发布:goodboy | 分类:程序设计 | 评论:0 | 引用:0 | 浏览:

评论:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。