#include
#include
/**
*该函数将申请一个三维的空间,最后又能成功释放掉
*/
void execute_fun(int m, int n, int p)
{
char ***p1 = NULL ;//初始化
p1= (char ***)malloc(m*sizeof(char**));//申请第一维的空间
if(p1 != NULL)
{
for(int i = 0; i < m ; i ++)
{
p1[i] = (char **)malloc(n*sizeof(char*));//申请第二维的空间
if(p1[i] != NULL)
{
for(int j = 0; j < n; j ++)
{
p1[i][j] = (char*)malloc(p*sizeof(char));//申请第三维的空间
if(p1[i][j] != NULL)
{
for(int k = 0; k < p ; k ++)
{
p1[i][j][k] = i+ j + k;
}
}
else
{
printf("p1[%d][%d]未申请到空间\n",i,j);
system("PAUSE");
exit(0);
}
}
}
else
{
printf("p1[%d]未申请到空间\n",i);
system("PAUSE");
exit(0);
}
}
}
else
{
printf("p1未申请到空间\n");
system("PAUSE");
exit(0);
}
printf("成功申请到空间!\n");
printf("开始释放空间........\n");
system("PAUSE");
for(int i = 0; i < m ; i ++)
{
for(int j = 0; j < n; j ++)
{
free(p1[i][j]);
p1[i][j] = NULL;
}
free(p1[i]);
p1[i] = NULL;
}
free(p1);
p1 =NULL;
printf("成功释放掉申请的空间!\n");
system("PAUSE");
}
/**
*主函数
*/
int main()
{
int m = 0;
int n = 0;
int p = 0;
printf("please input m,n,p\n");
scanf("%d%d%d",&m,&n,&p);
execute_fun(m,n,p);
return 0;
}