zoukankan      html  css  js  c++  java
  • C++:多维数组的动态分配(new)和释放(delete)

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

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

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

    int **array2D;
    //假定数组第一维长度为m, 第二维长度为n
    //动态分配空间
    array2D = new int *[m];
    for( int i=0; i<m; i++ )
    {
        array2D[i] = new int [n]  ;
    }
    //释放
    for( int i=0; i<m; i++ )
    {
        delete [] arrar2D[i];
    }
    delete array2D;

    P.S. 事实上二维数组空间的释放还不可以简单地用:delete [] array2D;
    2. 三维数组的动态分配和释放

    int ***array3D;
    //假定数组第一维为m, 第二维为n, 第三维为h
    //动态分配空间
    array3D = new int **[m];
    for( int i=0; i<m; i++ )
    {
        array3D[i] = new int *[n];
        for( int j=0; j<n; j++ )
        {
             array3D[i][j] = new int [h];
        }
    }
    //释放
    for( int i=0; i<m; i++ )
    {
        for( int j=0; j<n; j++ )
        {
             delete array3D[i][j];
        }
        delete array3D[i];
    }
    delete array3D;

    转处:
    https://www.cnblogs.com/Sylla-Zhang/archive/2012/10/08/2715300.html

  • 相关阅读:
    matlab cell
    matlab linux 快捷键设置——有问题还是要解决
    latex 小结
    TOJ 1258 Very Simple Counting
    TOJ 2888 Pearls
    HDU 1248 寒冰王座
    TOJ 3486 Divisibility
    TOJ 3635 过山车
    TOJ 1840 Jack Straws
    HDU 4460 Friend Chains
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12538065.html
Copyright © 2011-2022 走看看