FlyKu-------------咔咔通

Welcome to my blog. Hope you enjoy your stay here!

c++中多维数组动态分配

怎样给多维数组动态分配内存

//Allocate:
int **p = new int* [m];
for(int i = 0 ; i < m ; i++)
p[i] = new int[n];
//Use:
for(int i = 0 ; i < m; i++)
for(int j = 0 ; j < n ; j++)
p[i][j] = i * j;
//Free:
for(int i = 0 ; i < m ; i++)
delete[] p[i];
delete[] p;

1. 演示形为int[2][3]的二维动态数组
///////////////////////////////////////////////////////////////////
int n1, n2;
const int DIM1 = 2;
const int DIM2 = 3;
// 构造数组
int **ppi = new int*[DIM1];
for(n1 = 0; n1 < DIM1; n1++)
{
ppi[n1] = new int[DIM2];
}
// 填充数据
for(n1 = 0; n1 < DIM1; n1++)
{
for(n2 = 0; n2 < DIM2; n2++)
{
ppi[n1][n2] = n1 * 10 + n2;
}
}
// 输出
for(n1 = 0; n1 < DIM1; n1++)
{
for(n2 = 0; n2 < DIM2; n2++)
{
afxDump << "ppi[" << n1 << "][" << n2 << "] = "
<< ppi[n1][n2] << "\n";
}
}
// 释放数组
for(n1 = 0; n1 < DIM1; n1++)
{
delete [] ppi[n1];
}
delete [] ppi;

2. 三维动态数组(int[2][3][4])

请查看全文

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

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

在网上找了些资料,好多是关于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++的动态分配内存看下一篇文章
分页:[<<][1][>>]

日历

<< 2010·1 >>

Sun

Mon

Tue

Wen

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Powered By Z-Blog 1.6 Final Build 60816

Copyright FlyKu WebSite. Some Rights Reserved.