Segfault. Выделение памяти для структуры внутри структуры - PullRequest
0 голосов
/ 05 марта 2012

Хорошо, поэтому для структуры видеоигры, над которой я работаю, мне нужно выделить структуру "комнаты" внутри структуры "подземелье".К сожалению, я не могу выделить достаточно памяти, чтобы разместить всю необходимую мне информацию.Вот пример моей структуры данных:

typedef struct monster {
    int difficulty;
    char *name;
    char *type;
    int hp;
} monster;

typedef struct rooms {
    int n_monsters;
    int visited;
    struct rooms *nentry;
    struct rooms *sentry;
    struct rooms *wentry;
    struct rooms *eentry;
    monster *monsters;
} rooms;

typedef struct dungeon {
    char *name;
    int n_rooms;
    rooms *rm; // Subject to change
    rooms sroom;
} dungeon;

И именно здесь я получаю ошибку сегментации.

d->name = "Dungeon 1";
d->n_rooms = 10;
rooms *room = malloc(d->n_rooms * sizeof(rooms));

// Room 0
room[0].n_monsters = 1;
room[0].visited = 0;
*room[0].sentry = room[1]; // xCode is showing the seg-fault here

// Room 2
room[1].n_monsters = 1;
room[1].visited = 0;
*room[1].nentry = room[0];

d->rm = room;

Почему я получаю ошибку сегмента?Я выделяю достаточно памяти?

1 Ответ

1 голос
/ 05 марта 2012

Вы не выделили память для room[0].sentry.Попробуйте:

room[0].sentry = malloc(sizeof *room[0].sentry);
*room[0].sentry = ...

В качестве альтернативы, вы могли бы просто назначить указатель (я думаю, если бы работал лучше в вашем случае):

room[0].sentry = &room[1];
...