Выделение памяти под двумерный массив Си

Выделите память под двумерный динамический массив — матрицу — таким образом, чтобы данные все строки этой матрицы гарантированно располагались в оперативной памяти друг за другом. Просто malloc(nmsizeof(int)) не подойдёт, надо именно двумерный массив. Язык: C


Ответы (1 шт):

Автор решения: Harry

Проблем... Выделяйте именно так - malloc(N*M*sizeof(int)), а вот дальше...

int * data = malloc(N*M*sizeof(int));
int ** a = malloc(N*sizeof(int*));
for(int i = 0; i< N; ++i)
    a[i] = data + M*i;

Все, все данные лежат подряд, обращение a[i][j] работает корректно - что еще нужно? :)

И освобождать память проще -

free(a[0]);
free(a);
→ Ссылка