动态数组

http://www.codecho.com/dynamic-memory-allocation-for-multi-dimension-array-in-c/

 

 

语言中多维数组空间的动态分配

二维数组动态空间的申请原则:
申请的时候从外层往里层,逐层申请;
释放的时候从里层往外层,逐层释放。

二维数组动态空间分配举例,首先来看一组使用new方法:

?
1
2
3
4
5
6
7
8
9
10
const size_t DIMENSION = 10;
int **pp = new int *[DIMENSION];
for ( int i = 0; i < DIMENSION; ++i)
     pp[i] = new int [DIMENSION];
  
pp[3][5] = 40;
  
for ( int i = 0; i < DIMENSION; ++i)
     delete pp[i];
delete pp;

还有一组使用malloc方法,简单需要存放30个double 数据的内存3*10:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     double * * power;
     int i , j;
     power = ( double * * ) malloc ( sizeof ( double ) * 3 ) ;
     for ( i = 0 ; i < 3 ;i + + )
     {
         power[i] = ( double * ) malloc ( sizeof ( double ) * 10 ) ;
  
     }
/ / ....
     for ( i = 0 ;i < 3 ;i + + )
     {
         free ( power[i] ) ;
     }
     free ( power ) ;

其实没有必要每次用for循环去分配内存。可以一次性申请所需要的内存:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
     double **power;
     double *subpower;
     int i,j;
     power = ( double **) malloc ( sizeof ( double ) *3);
     subpower = ( double *) malloc ( sizeof ( double ) * 10 * 3);
     for (i =0; i< 3;i++)
     {
         power[i] = &subpower[i * 10];
     }
  
//...
     free (subpower);
     free (power);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值