深入理解动态创建数组

原创 2015年07月09日 10:02:42

本文主要从内存分配的角度来分析一下数组的动态创建过程,具体过程参考下文的代码很容易理解,不能深入理解具体过程的可以在代码调试阶段查看一下各个数组元素的地址。

#include <iostream>

using namespace std;

int main()
{
    int m = 10, n=5, k=6;

    //动态创建一维数组pa[m]
    int *pa = new int[m];
    delete [] pa;

    //动态创建二维数组pb[m][6],
    //连续分配内存,pb[0][0],pb[0][1]...内存编号连续
    int (*pb)[6] = new int[m][6];
    delete [] pb;

    //动态创建二维数组pc[m][n]
    //pc[0],pc[1],pc[2]...内存编号连续,
    //每个内存中存放一个指向int类型的指针,该int类型指针从pc[m]的地址开始
    int **pc = new int *[m];
    for (int i=0;i<m;i++)
    {
        pc[i] = new int[n];
    }
    for(int i=0;i<m;i++)
    {
        delete [] pc[i];
    }
    delete []pc;

    //动态创建三维数组
    int ***pd = new int **[m];
    for (int i=0;i<m;i++)
    {
        pd[i] = new int *[n];
        for (int j=0;j<n;j++)
        {
            pd[i][j] = new int [k];
        }
    }
    for (int i=0;i<m;i++)
    {
        for (int j=0;j<n;j++)
        {
            delete [] pd[i][j];
        }
        delete [] pd[i];
    }
    delete [] pd;
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++动态创建二维数组

  • 2015-03-13 22:20
  • 14KB
  • 下载

动态创建二维数组

动态创建二维数组------使用vector不定长数组 二维vector vector > veclnt(m , vector(n)); //m*n的二维vector 动态创建m...

学习小结(动态创建数组,find_first_of())

动态创建一维数组,动态创建二维数组,find_first_of(),find_first_not_of(),str.find_last_of(),str.find_last_not_of()

vector动态创建数组

相应的头文件: #include vector定义向量对象:vector ivec; //定义向量对象 ivec vector ivec1(ivec); // 定义...

[ExtJS5学习笔记]第二十节 Extjs5配合数组的push方法,动态创建并加载组件

items其实就是一个数组,可以看成是json格式样式的一个数组。既然这样,那么当我们定义好了这样的字符串样式之后,可以使用数组的push方法,将这些项,一个一个的加载进去,就可以动态的进行组件创建了...

C语言实现动态创建二位数组

在C语言中动态的一位数组使用malloc动态分配空间来实现的。实际上,C语言中没有二维数组或者说至少对二维数组没有直接的支持。而是将二维数组转换为一位数组的数组。如:编译器会将a[1][3]解释为 *...

动态创建多维数组

数组的动态内存分配 假设我们要为一个字符数组(一个有 20 个字符的字符串)分配内存,我们可以使用上面实例中的语法来为数组动态地分配内存,如下所示: char* pvalue  = NULL;  ...

动态创建数组

使用运算符new也可以创建数组类型的对象,这时需要给出数组的结构说明。用new运算符动态创建一维数组的语法形式为: new 类型名【数组长度】; 其中数组长度指出了数组元素的个数,它可以是任何能够...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)