gpt4 book ai didi

c - 段错误。为结构体中的结构体分配内存

转载 作者:行者123 更新时间:2023-11-30 15:58:41 25 4
gpt4 key购买 nike

好吧,对于我正在开发的视频游戏的结构,我需要在结构“地牢”内分配结构“房间”。不幸的是,我似乎无法分配足够的内存来放置我需要的所有信息。这是我的数据结构的示例:

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;

为什么我会出现段错误?我分配了足够的内存吗?

最佳答案

您没有为room[0].sentry分配内存。尝试:

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

或者,您可以只分配指针(我认为在您的情况下效果会更好):

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

关于c - 段错误。为结构体中的结构体分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9572969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com