深入理解动态创建数组

原创 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语言中动态创建二维数组

  • 2010年12月14日 11:40
  • 350B
  • 下载

c++动态创建二维数组

  • 2015年03月13日 22:20
  • 14KB
  • 下载

动态创建二维数组的两种方法

首先来讲解一下什么是二维数组。其实二维数组也可以说是一个一维数组,只是这个一维数组比较特别,它的每一个元素都是一个一维数组。二维数组也称矩阵。 方法1...

js中动态创建关联数组的问题

  • 2011年10月24日 15:48
  • 12KB
  • 下载

<细节>动态创建二维数组

今天在做一个关于数组相似度的题目,需要动态创建二维数组,刚开始想用常规的int a[ ][ ]建立,但很快就发现行不通,这种常规数组必须在编译前指定数组的维数,而这个题目在的维数必须在运行中计算得出,...

动态创建多维数组和释放的注意事项

自己写了一个HMM前向算法,发现了好多的问题,这里把多维数组的创建以及销毁问题进行解释,希望可以帮助到有需要的人还有我自己,日后可能用的到。 创建: void mallocCalcSpace(...

字符指针动态创建字符串在使用时并不能完全取代字符数组

“hello world!”这是一个字符串常量。 他在内存中的存储时末尾自动加上‘\0’;如果有字符数组: char st[13] = “hello world!” 注意预留了’\0’ 则他...

动态创建表格,更新、提交、循环获取表格中各种元素的数据 并转换为JSON,数组的数据格式。

动态创建表格,更新、提交、循环获取表格中各种元素的数据 并转换为JSON,数组的数据格式。...

动态创建多维数组

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

动态创建数组

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

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