C 链表逻辑错误导致程序冻结

C 链表逻辑错误导致程序冻结,c,debugging,pointers,linked-list,runtime-error,C,Debugging,Pointers,Linked List,Runtime Error,我正在尝试创建经典的Snake游戏(在Linux终端中),但我的链表和/或基本逻辑实现存在问题。我非常确定我的move_snake()方法是正确的-但是,在完成grow_snake()后,程序将冻结,grow_snake()添加的节点数与检索到的奖杯值相同。我有一种感觉,这是因为我在grow_snake()类中分配指针的方式,特别是在添加到蛇头之后,但是我遇到了很大的困难,我现在真的可以使用另一双眼睛了。提前谢谢 移动蛇() 长出一条蛇() 我的感觉是,在grow_snake中的每次迭代中,您都

我正在尝试创建经典的Snake游戏(在Linux终端中),但我的链表和/或基本逻辑实现存在问题。我非常确定我的move_snake()方法是正确的-但是,在完成grow_snake()后,程序将冻结,grow_snake()添加的节点数与检索到的奖杯值相同。我有一种感觉,这是因为我在grow_snake()类中分配指针的方式,特别是在添加到蛇头之后,但是我遇到了很大的困难,我现在真的可以使用另一双眼睛了。提前谢谢

移动蛇()

长出一条蛇()


我的感觉是,在grow_snake中的每次迭代中,您都必须创建一个新的_头。 e、 g.移动

struct snake_struct *new_head = malloc(sizeof(struct snake_struct *));
紧接着

for(i = 0; i < num_links; i++) {
for(i=0;i
我的感觉是,您必须在grow\u snake中的每次迭代中创建一个新的头。 e、 g.移动

struct snake_struct *new_head = malloc(sizeof(struct snake_struct *));
紧接着

for(i = 0; i < num_links; i++) {
for(i=0;i
grow\u snake()
函数中,您的
malloc()
调用未分配正确的字节数。通过写入:

malloc(sizeof(struct snake_struct *));
您正在分配指向结构的指针的大小,而不是分配结构本身的大小。请删除“*”并尝试使用

malloc(sizeof(struct snake_struct));
grow\u snake()
函数中,您的
malloc()
调用没有分配正确的字节数。通过写入:

malloc(sizeof(struct snake_struct *));
您正在分配指向结构的指针的大小,而不是分配结构本身的大小。请删除“*”并尝试使用

malloc(sizeof(struct snake_struct));

我觉得这也是问题所在,所以昨晚我移动了这个指针的内存分配,但我想我在这里发布的代码中没有反映出这个变化。尽管如此,程序仍然添加了适当数量的段,然后冻结,而不是像预期的那样继续移动蛇。非常感谢尽管如此,还是谢谢你的建议!我感觉这也是问题所在,所以昨晚我移动了这个指针的内存分配,但我想我在这里发布的代码中没有反映出这个变化。尽管如此,程序仍然添加了适当数量的段,然后冻结,而不是继续移动蛇正如预期的那样。当然非常感谢你的建议,再次感谢!是的-那小小的改变几乎解决了所有问题。我不敢相信我自己没有抓住,非常感谢!是的-那小小的改变几乎解决了所有问题。我不敢相信我自己没有抓住,非常感谢!