排查bug排了半个小时,终于找到原因。下面的代码中node不是动态分配的,函数退出后就会被销毁,最终在main函数中输出的时候一直显示字符串乱码,百思不得其解,数字不知道为什么是对的。最后终于体会到动态内存分配的问题!
void input()
{
while(1)
{
int num,score;
char name[20];
struct stud_node *next;
scanf("%d",&num);
if(num == 0) break;
scanf("%s %d",name,&score);
struct stud_node node;
node.num = num;
node.score = score;
strcpy(node.name,name);
node.next=NULL;
if(head == NULL) head = tail = &node;
else {tail->next = &node;tail = tail->next;}
}
}
博主在排查bug时发现,由于未使用动态内存分配,导致函数退出后局部变量被销毁,进而造成在main函数中输出字符串时出现乱码。虽然数字部分正确,但这一问题让他困扰了半小时。通过此经历,他深入理解了动态内存分配的重要性。
7390

被折叠的 条评论
为什么被折叠?



