Выделение памяти под двумерный массив Си
Выделите память под двумерный динамический массив — матрицу — таким образом, чтобы данные все строки этой матрицы гарантированно располагались в оперативной памяти друг за другом. Просто 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);