Я хочу создать матрицу, содержащую 2 информации в каждой ячейке, поэтому я решил создать двумерную структуру.Более того, я должен динамически распределять память для этой задачи.Когда я запускаю следующий код, программа заканчивается «Ошибка сегментации (ядро выгружено)» .... Я попытался отладить это с помощью printf () и увидел, что все работает, кроме части кода после вызова createMap (R,карта).
Вот мой код:
#include "functions.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Maps {
int height;
int gloves;
};
void read (int *R, int *P) {
scanf("%d%d", R, P);
}
void createMap (int *R, struct Maps **map) {
free(map);
map = calloc (2 * (*R) + 1, sizeof(struct Maps *));
for (int i = 0; i < 2 * (*R) + 1; ++i) {
map[i] = calloc (2 * (*R) + 1, sizeof(struct Maps));
}
for (int i = 0; i < 2 * (*R) + 1; ++i)
{
for (int j = 0; j < 2 * (*R) + 1; ++j)
{
map[i][j].height = i + j;
map[i][j].gloves = i + j;
}
}
}
int main () {
int *R = malloc (sizeof(int));
int *P = malloc (sizeof(int));
struct Maps **map = malloc (sizeof(struct Maps *));
read (R, P); // work
createMap (R, map); // kind of executes but there are no data stored
printf("%d\n", map[0][0].height);
free (R);
free (P);
return 0;
}
// code on pastebin: https://pastebin.com/v77FbttE