来源:微信公众号「编程学习基地」
二维数组的动态分配
#include<stdio.h>
#include<stdlib.h>
int main()
{
//二维数组的动态分配问题
int row = 4, col = 4; //动态数组的行和列
int **p;
//申请高一级的动态数组
p = (int**)malloc(sizeof(int*) * row);
//申请低一级的动态数组
for (int i = 0; i < 5; i++)
{
p[i] = (int *)malloc(sizeof(int) * col);
}
//访问动态数组
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
p[i][j] = i*j; //对动态数组赋值
printf("%d\t", p[i][j]);
}
putchar(10);
}
//释放低一级的动态数组
for (int i = 0; i < 4; i++)
{
//free(p[i]);
free(*(p + i));
}
//释放高一级的动态数组
free(p);
return 0;
}
注意事项:申请完内存要释放,很多情况下会忘记释放高一级的动态数组