首页 > 系统相关 >三级指针动态分配/释放内存(C / C++)

三级指针动态分配/释放内存(C / C++)

时间:2022-11-05 17:00:53浏览次数:53  
标签:main int 内存 动态分配 high C++ include define

C 语言版本

#include <stdio.h>
#include <stdlib.h>
 
#define high 2
#define row  3
#define col  4 
int main()
{   
    int i,j,k;   // p[2][3][4]
    
    int ***p;
    p = malloc( sizeof(int **)*high); 
    for(i=0; i<high; i++) 
    { 
        p[i]= malloc( sizeof(int *)*row);//new int *[3]; 
        for(j=0; j<row; j++) 
            p[i][j]= malloc( sizeof(int )*col);//new int[4]; 
    }
    
    //输出 p[i][j][k] 三维数据
    for(i=0; i<high; i++)   
    {
        for(j=0; j<row; j++)   
        { 
            for(k=0;k<col;k++)
            { 
                p[i][j][k]=i+j+k;
                printf("%d ",p[i][j][k]);
            }
            printf("\n");
        }
        printf("\n");
    }
    
    // 释放内存
    for(i=0; i<high; i++) 
    {
        for(j=0; j<row; j++) 
        {   
            free(p[i][j]);   
        }   
    }       
    for(i=0; i<high; i++)   
    {       
        free(p[i]);   
    }   
    free(p);  
    return 0;
}

 

 

C++版本

#include <iostream>
using namespace std;
 
int 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]; 
    }
    
    //输出 p[i][j][k] 三维数据
    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;
    }
    
    // 释放内存
    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;  
    return 0;
}

 

标签:main,int,内存,动态分配,high,C++,include,define
From: https://www.cnblogs.com/profession/p/16860568.html

相关文章