您的位置:首页 > 编程语言 > C语言/C++

C/C++多维数组内存分配及释放

2014-12-30 22:41 120 查看
注意顺序

#include <stdio.h>
#include <malloc.h>

int main()
{
int ****p; //开辟一个2×3×4×5的4维int数组
int h,i,j,k;
p=(int ****)malloc(2*sizeof(int ***));
if (NULL==p)
return 1;
for (h=0;h<2;h++)
{
p[h]=(int ***)malloc(3*sizeof(int **));
if (NULL==p[h]) return 1;
for (i=0;i<3;i++)
{
p[h][i]=(int **)malloc(4*sizeof(int *));
if (NULL==p[h][i]) return 1;
for (j=0;j<4;j++)
{
p[h][i][j]=(int *)malloc(5*sizeof(int));
if (NULL==p[h][i][j]) return 1;
}
}
}
for (h=0;h<2;h++)
{
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
{
for (k=0;k<5;k++)
{
p[h][i][j][k]=h*60+i*20+j*5+k;
}
}
}
}
for (h=0;h<2;h++)
{
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
{
for (k=0;k<5;k++)
{
printf(" %3d",p[h][i][j][k]);
}
printf("\n");
}
printf("--------------------\n");
}
printf("=======================\n");
}
for (h=0;h<2;h++)
{
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
{
free(p[h][i][j]);
}
free(p[h][i]);
}
free(p[h]);
}
free(p);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: