二维数组的动态分配有多种方式。
1、动态分配二维数组
前后以c语言和c++的分配方式,实现同一场景下的二维数组的内存分配。
(1)已知第二维
char (*a)[N];//指向数组的指针
a = (char (*)[N])malloc(sizeof(char *) *m);
printf("%d\n", sizeof(a));//4,指针
printf("%d\n", sizeof(a[0]));//N,一维数组
free(a);
char (*a)[N];//指向数组的指针
a = new char[m][N];
printf("%d\n", sizeof(a));//4,指针
printf("%d\n", sizeof(a[0]));//N,一维数组
delete[] a;
(2)已知第一维
char* a[M];//指针的数组
int i;
for(i=0; i<M; i++)
a[i] = (char *)malloc(sizeof(char) * n);
printf("%d\n", sizeof(a));//4*M,指针数组
printf("%d\n", sizeof(a[0]));//4,指针
for(i=0; i<M; i++)
free(a[i]);