三维数组的动态申请与释放

#include <iostream>
using namespace std;   

void main()
{
    int i,j,k;   // p[2][3][4]

    int ***p;
    p = new int **[2];
    for(i=0; i<2; i++)
    {
        p[i]=new int *[3];
        for(j=0; j<3; j++)
            p[i][j]=new int[4];
    }

    //finish creating use p[i][j][k] to access the data
    for(i=0; i<2; i++)
    {
        for(j=0; j<3; j++)
        {
            for(k=0;k<4;k++)
            {
                p[i][j][k]=i+j+k;
                cout<<p[i][j][k]<<" ";
            }
            cout<<endl;
        }
        cout<<endl;
    }

    //free the memory
    for(i=0; i<2; i++)
    {
        for(j=0; j<3; j++)
        {
            delete [] p[i][j];
        }
    }
    for(i=0; i<2; i++)
    {
        delete [] p[i];
    }
    delete [] p;  

}

  

时间: 2024-10-25 10:18:56

三维数组的动态申请与释放的相关文章

动态申请和释放一个二维数组

动态申请一个二维数组也很常见,下面是常见的两种形式. //方法1 unsigned char** pImg= new unsigned char*[m]; for(int i=0;i<m;i++){ pImg[i]=new unsigned char[n]; } //方法2 unsigned char** pImg= new unsigned char*[m]; unsigned char* arr= new unsigned char[m*n]; for(int i=0;i<m;i++){

内存(堆)的动态申请和释放

两个函数:malloc和free 需要头文件:stdlib.h void *malloc(size_t size); void free(void *ptr); 需要说明的是: 申请: 1).参数是申请内存的字节数. 2).申请的是一块连续的内存. 3).返回值是void *类型,因此,要将他的返回值付给一个指针的时候,一定要类型转换. 释放: 1).参数是要是要释放内存的其实地址. 2).不允许重复的释放. 3).只能释放堆空间. 对链表中有数据有指针的一个节点的情况,在删除一个节点的时候,直

C++二维数组动态申请内存

好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到了,顺便写下来,适当时候给C++初学者用用. -----------C++二维数组动态申请内存-------------- 如果对new和delete不是很了解的话可以到这里来看看,http://www.cnblogs.com/hazir/p/new_and_delete.html 首先,我们一般需

C++中动态申请二维数组并释放方法

C/C++中动态开辟一维.二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下. C++中有三种方法来动态申请多维数组 (1)C中的malloc/free (2)C++中的new/delete (3)STL容器中的vector 下面逐一介绍: 第一种:malloc/free 1.动态开辟一维数组 [cpp] view plaincopy //动态开辟一维数组 void dynamicCreate1Array() { int m; int i; int *p; printf("

如何在C++中使用动态三维数组

用new 和 delete 的方法来实现. 注意:在使用new申请内存时,在使用过后,一定要采用delete来进行释放内存. 使用该方法创建动态数组时,需要由数组的角标依次向右进行创建:同时,也需要依照角标,从左到右来进行删除. 代码功能为:声明三维动态数组,将角标和进行相加并添加到mfc的list中,然后释放内存. 具体代码如下 //声明三维数组,长处分别为X_Length,Y_Length,Z_Length int X_Length = 5, Y_Length = 6, Z_Length =

C++中动态申请数组

动态申请一维数组 申请使用new,释放使用delete[] 可以通过数组名[下标]和*(数组名+下标)的方式访问数组 int main() { int number = 10; int *array = new int[number]; //数组初始化 for (int i = 0; i < number; ++i) { array[i] = i; } for (int i = 0; i < number; ++i) { cout << *(array + i) <<

C语言动态内存的申请和释放

什么是动态内存的申请和释放? 当程序运行到需要一个动态分配的变量时,必须向系统申请取得堆中的一块所需大小的存储空间,用于存储该变量.当不再使用该变量时,也就是它的生命结束时,要显式释放它所占用的存储空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源. 下面将介绍动态内存申请和释放的函数 1.malloc函数 在C语言中,使用malloc函数来申请内存.函数原型如下: #include<stdlib.h> void *malloc(size_t size); 参数size代表需要动

C++中动态申请二维数组

这里主要介绍C++中动态申请二维数组的两种方式,直接给出代码,很容易明白,简单的作为一个笔记. #include <iostream> #include <iomanip> // 输入输出操纵 #include <vector> using namespace std; // 法一:new 方式申请 void dynamicArray() { int rows, cols; cin >> rows >> cols; int **element =

数组内存申请和释放,指针数组和数组指针

总结 对于指针数组的理解:按照字面意思,首先是指针,其次是数组,就表明这是一个数组,不过数组里面存储的指针.``` // 使用指针数组 int **ptr = new int*[4]; for(int i = 0; i < 4; ++i) { *(ptr+i) = new int [3]; }```如代码所示:new int * [4],表明这是一个数组,数组里面存储的是 int *类型的指针.而等号左值 int ** ptr,首先要看(int *)*ptr ,表明这一个指针,其指向了int *