动态分配多维数组和释放其内存

/*动态构建三维数组内存分配函数*/
/*
 * pArr: 指向三维数组首地址
 * x: 三维数组第一维元素个数
 * y: 三维数组第二维元素个数
 * z: 三维数组第三维元素个数
 */
void Create3DActiveArray(int ***pArr, int x, int y, int z)
{
    int i, j, k;
    pArr = (int ***)malloc(x * sizeof(int **));

    for (i = 0; i < x; i++)
    {
        pArr[i] = (int **)malloc(y * sizeof(int *));
        for (j = 0; j < y; j++)
        {
           pArr[i][j] = (int *)malloc(z * sizeof(int));
           for (k = 0; k < z; k++)
           {
              pArr[i][j][k] = i + j + k;
           }
        }
    }
}

-----------------------------------------------------华丽的分割线-------------------------------------------------------

  1. void Free3DActiveArray(int ***pArr, int x, int y)
    {
        int i, j, k;
        for (i = 0; i < x; i++)
        {
            for (j = 0; j < y; j++)
            {
                free(pArr[i][j]);
                pArr[i][j] = 0;
            }
            free(pArr[i]);
            pArr[i] = 0;
        }
        free(pArr);
        
    
    
    1. ---------------------------------------华丽的分割线-----------------------------

    #include <stdio.h>
    #include <malloc.h>
    
    void Malloc3DActiveArray(int *** pArr, int x, int y, int z);
    void Free3DActiveArray(int *** pArr, int x, int y);
    //void Display3DArray(int *** pArr, int x, int y, int z);
    
    
    int main(void)
    {
        int x, y, z;
        int *** array = NULL;
    
        printf("输入一维长度: ");
        scanf("%d",&x);
        printf("输入二维长度: ");
        scanf("%d",&y);
        printf("输入三维长度: ");
        scanf("%d",&z);
    
        Malloc3DActiveArray(array, x, y, z);
        Free3DActiveArray(array, x, y);
        array = NULL;
    
        return 0;
    }
    
    void Malloc3DActiveArray(int *** pArr, int x, int y, int z)
    {
        int i, j, k;
        pArr = (int ***)malloc(x * sizeof(int **));
    
        for (i = 0; i < x; i++)
        {
            pArr[i] = (int **)malloc(y * sizeof(int *));
            for (j = 0; j < y; j++)
            {
                pArr[i][j] = (int *)malloc(z * sizeof(int));
                for (k = 0; k < z; k++)
                {
                    pArr[i][j][k] = i + j + k + 1;
                    printf("%d ", pArr[i][j][k]);
                }
                printf("\n");
            }
            printf("\n");
        }
    }
    
    void Free3DActiveArray(int *** pArr, int x, int y)
    {
        int i, j;
        for (i = 0; i < x; i++)
        {
            for (j = 0; j < y; j++)
            {
                free(pArr[i][j]);
                pArr[i][j] = 0;
            }
    
            free(pArr[i]);
            pArr[i] = 0;
        }
        free(pArr);
    }



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值