我正在用c制作一个游戏,并且我得到了一个我创建的结构数组的错误。
typedef struct{
int type, level, x, y, w, h;
} Tile;
Tile *map[256];
Tile *t;
t->type = 0;
t->level = 0;
t->x = 0;
t->y = 0;
t->w = 0;
t->h = 0;
map[0] = t;
编译完成后,程序会打印:
Segmentation fault (core dumped)
答案 0 :(得分:2)
定义指针不会自动使该指针指向有效的内存位置。一个没有分配内存的指针被称为未初始化的指针,不能(我们应该说,不应该?)被解除引用。
在您的代码中,
t->type = 0;
等等,您正在取消引用未分配内存的t
。因此,通过取消引用单元化指针,可以调用undefined behavior。分段错误是UB的许多副作用之一。
解决方案:您需要在实际取消引用之前将内存分配给t
。也许您可以查看malloc()
和函数族来完成内存分配。