0
좋아, 그럼 내가 작업하고있는 비디오 게임의 구조에 대해, 구조체 "던전"내부에 구조체 "룸"을 할당해야합니다. 불행히도 필요한 모든 정보를 넣을만큼 충분한 메모리를 할당 할 수 없습니다. 내 데이터 구조의 샘플은 다음과 같습니다.Segfault. 구조체 내에서 구조체에 대한 메모리 할당
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;
왜 나는 seg-fault가 발생합니까? 충분한 메모리를 할당하고 있습니까?
당신을 감사합니다! 이것은 많은 도움이되었습니다. 하나의 질문이지만, 포인터를 할당하여 여전히 모든 별도의 객실에 충분한 메모리를 할당합니까? – atb
@alexthebake'room [0] .sentry'와'room [1]'포인터를 같은 것에 할당함으로써. 따라서 하나를 변경하면 다른 하나에 반영됩니다. – cnicutar