Ваша ошибка сегментации происходит из-за неправильной разыменования map
;Вы должны написать это как (*map)[i][k]
вместо *map[i][k]
.Хотя в вызове &
лучше не указывать fill_map
и соответствующим образом настроить прототип:
fill_map(map, height, width);
...
void fill_map(int **map, int height, int width)
{
...
map[i][k] = character;
...
}
Вы можете очистить malloc
вызовы следующим образом:
map = malloc(height * sizeof *map);
и
map[i] = malloc(width * sizeof *map[i]);
Приведения не нужны в C 1 и считаются плохой практикой.
1 Это
не истина в C ++;требуется приведение, но если вы пишете C ++, вы должны использовать
new
вместо
malloc
.