При попытке работать с массивом выдается ошибка Segmentation fault. Необходимо выделение памяти именно в отдельной процедуре
Выделение памяти в процедуре под двумерный массив
#include <stdio.h>
#include <stdlib.h>
// Объявление процедуры выделения памяти
void memoryAllocation( int ***arr, int *column, int *line);
int main() {
// Двумерный динамический массив
int **array = NULL;
// Размерность массива
int column = 7, line = 5;
// Процедура выделения памяти
memoryAllocation( &array, &column, &line);
// Освободим память
free (array);
array = NULL;
return 0;
}
// Процедура выделения памяти под динамический двумерный массив
void memoryAllocation( int ***arr, int *column, int *line) {
*arr = malloc(*column * sizeof(*arr));
for (int index = 0; index < *column; index++) {
*arr[index] = malloc(*line * sizeof(**arr));
}
}
В итоге при попытке поработать с ним, выдается Segmentation fault( При выделение в функции main ошибок нет, а при попытке работы во внешних функциях есть... Помогите разобраться!
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Чаще надо скобочки ставить. Приоритет у квадратных скобочек больше, чем у разыменования. Надо значения ставить (*arr)[index] = ... Ещё перепутали размеры указателей sizeof(int*) (или sizeof(**arr)) с простыми типами sizeof(int) (или sizeof(***arr)).
// Процедура выделения памяти под динамический двумерный массив
void memoryAllocation( int ***arr, int *column, int *line) {
*arr = malloc(*column * sizeof(int*));
for (int index = 0; index < *column; index++) {
(*arr)[index] = malloc(*line * sizeof(int));
}
}