Как динамически выделить непрерывный блок памяти для двумерного массива
Если я выделю 2D-массив, как этоInt [N] [N]; он выделит непрерывный блок памяти.
Но если я попытаюсь сделать это динамически, как это:
int **a = malloc(rows * sizeof(int*));
for(int i = 0; i < rows; i++)
a[i] = malloc(cols * sizeof(int));
Это поддерживает единицу шага между элементами в строках, но это не может иметь место между рядами.
Одним из решений является преобразование из 2D в 1D, кроме того, есть ли другой способ сделать это?