C语言中三维空间的申请与释放

来源:互联网 发布:公务员清闲部门 知乎 编辑:程序博客网 时间:2024/06/07 02:28
<pre class="cpp" name="code">#include <stdio.h>#include <stdlib.h>/***该函数将申请一个三维的空间,最后又能成功释放掉*/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;}


 

0 0
原创粉丝点击