关于#链表#的问题:刚学到单链表,发现free函数一用就报错:Trace/breakpointtrap,请问是什么原因呢😭#include <stdio.h>(语言-c语言)

刚学到单链表,发现free函数一用就报错:Trace/breakpoint trap,请问是什么原因呢😭


#include 
#include 
struct node{
    int c;//系数
    int e;//指数
    struct node *next=NULL;
};
void insert(int c,int e,node *head){
    if(c==0){
        return;
    }
    node *q;
    q=(struct node*) malloc (sizeof(node));
    q->c=c;
    q->e=e;
    q->next=head->next;
    head->next=q;
    //free(q)报错?
}
void read(node *head){
    head=(struct node*) malloc (sizeof(node));
    head->next=NULL;
    int c,e;
    while(1){
        scanf("%d %d",&c,&e);
        insert(c,e,head);
        if(c==0){
            return;
        }
        else{
            head=head->next;
        }
    }
}//读入多项式
int main(){
    node *f,*g;
    read(f);
    read(g);
    return 0;
}

在这free的话,下个节点增加就崩溃了。q是有效节点,不能free