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