Как динамически выделить непрерывный блок памяти для двумерного массива

Если я выделю 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, кроме того, есть ли другой способ сделать это?

Ответы на вопрос(7)

Ваш ответ на вопрос