C++动态数组分配
int **arr = NULL;
int m, n;
//非连续分配
arr = new int*[m];
for(int i = 0; i < m; i ++)
arr[i] = new int[n];
//释放
for(int i = 0; i < m; i ++)
delete[] arr[i];
delete[] arr;
//连续分配内存
arr = new int*[m];
arr[0] = new int[m * n];
for(int i = 1; i < m; i ++)
arr[i] = arr[i-1] + n;
//释放
delete[] arr[0];
delete[] arr;
C动态数组分配
//非连续
arr = (int **)malloc(sizeof(int *) * m);
for(int i = 0; i < m; i ++)
arr[i] = (int *)malloc(sizeof(int) * n);
//释放
for(int i = 0; i < m; i ++)
free(arr[i]);
free(arr);
//连续
arr = (int **)malloc(sizeof(int *) * m);
arr[0] = (int *)malloc(sizeof(int) * m * n);
for(int i = 1; i < m; i ++)
arr[i] = arr[i-1] + n;
//释放
free(arr[0]);
free(arr);