Создание и удаление двухмерного динамического массива
Необходимо помнить, что в C двумерный массив является "массивом из указателей на линейные массивы". Поэтому нужно создать как массив указателей, так и сами линейные массивы. А при удалении нужно удалить и линейные массивы и массив указателей:
int **pArr = new int*[dim1];
for (i = 0; i < dim1; i++) pArr[i] = new int[dim2];
for (i = 0; i < dim1; i++) delete[] pArr[i];
delete[]pArr;
Создание и удаления трехмерного динамического массива
Все происходит по аналогии с двумерным массивом:
int ***ppArr;
ppArr = new int**[dim1];
for (i = 0; i < dim1; i++) ppArr[i] = new int*[dim2];
for (i = 0; i < dim1; i++)
{
for (j = 0; j < dim2; j++) ppArr[i][j] = new int[dim3];
}
for (i = 0; i < dim1; i++)
{
for (j = 0; j < dim2; j++) delete[] ppArr[i][j];
}
for (i = 0; i < dim1; i++) delete[] ppArr[i];
delete[] ppArr;