我有以下main函数声明一个World结构并从Xml文件中读取数据,该文件存储在结构中:
int main(){
World *w;
w = create_world();
world_load("xmlfile", w);
return EXIT_SUCCESS;
}
通过调用函数create_world():
来分配World结构的内存World *create_world(){
World *w = NULL;
if(!(w = (World *)malloc(sizeof (World)))) return NULL;
return w;
}
世界结构如下:
struct _World {
Space *space[MAX_SPACES + 1];
Object *object[MAX_OBJECTS + 1];
Link *link[MAX_LINKS + 1];
Player *player;
};
执行程序时,会发生分段错误。我尝试过传递valgrind并且继续报告"条件跳转或移动取决于未初始化的值"。这可能是显而易见的,但我无法弄清问题是什么......提前谢谢。
答案 0 :(得分:0)
我的猜测是你正在使用World结构的字段而不实际初始化它们。由于这些字段只是指针,因此在为World对象分配内存时不会分配它们。当访问w-> space [0]时,这将导致访问冲突。您应该为数组分配内存,或者从World结构中的数组中删除指针表示法,具体取决于字段的使用方式。