Rog*_*ews 4 c pointers memory-management multidimensional-array
我必须使用三指针将内存分配给3D数组.
#include <stdio.h>
int main()
{
int m=10,n=20,p=30;
char ***z;
z = (char***) malloc(sizeof(char**)*m*n*p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是正确的做法吗?(我认为我在做的是不正确的.)
要完全分配3D动态数组,您需要执行以下操作:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m=10,n=20,p=30;
char ***z;
z = malloc(m * sizeof(char **));
assert(z != NULL);
for (i = 0; i < m; ++i)
{
z[i] = malloc(n * sizeof(char *));
assert(z[i] != NULL);
for (j = 0; j < n; ++j)
{
z[i][j] = malloc(p);
assert(z[i][j] != NULL);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
释放数据留给读者练习.