C++:多维数组的动态分配(new)和释放(delete)

      今天在编程的时候遇到了二维数组动态分配的问题,在网上看到一篇文章,在此和大家共享。

      原文地址:http://www.cnblogs.com/Sylla-Zhang/archive/2012/10/08/2715300.html

      对于简单的一维数组动态内存分配和释放,相信大家都是知道的,不过还是举个例子吧:

1 int *array1D;
2 //假定数组长度为m
3 //动态分配空间
4 array1D = new int [m];
5 //释放
6 delete [] array1D;

       但是,对于多维数组动态分配,大家可能不太熟悉。下面以常见的二维和三维数组为例来说明:

1. 二维数组的动态分配和释放

复制代码
 1 int **array2D;
 2 //假定数组第一维长度为m, 第二维长度为n
 3 //动态分配空间
 4 array2D = new int *[m];
 5 for( int i=0; i<m; i++ )
 6 {
 7     array2D[i] = new int [n]  ;
 8 }
 9 //释放
10 for( int i=0; i<m; i++ )
11 {
12     delete [] arrar2D[i];
13 }
14 delete array2D;
复制代码

P.S. 事实上二维数组空间的释放还可以更简单地用:delete [] array2D;

     2. 三维数组的动态分配和释放

复制代码
 1 int ***array3D;
 2 //假定数组第一维为m, 第二维为n, 第三维为h
 3 //动态分配空间
 4 array3D = new int **[m];
 5 for( int i=0; i<m; i++ )
 6 {
 7     array3D[i] = new int *[n];
 8     for( int j=0; j<n; j++ )
 9     {
10          array3D[i][j] = new int [h];
11     }
12 }
13 //释放
14 for( int i=0; i<m; i++ )
15 {
16     for( int j=0; j<n; j++ )
17     {
18          delete array3D[i][j];
19     }
20     delete array3D[i];
21 }
22 delete array3D;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值