尝试创建一个从文件读取格式化输入的程序,并在第二次使用Emmission_read()
时崩溃。如果我注释掉循环它就可以了。
void Top_read(FILE* f, TVNodeType head) {
TVNodeType ptr;
head = mallocwarp(sizeof(TVNodeType));
head->next = NULL;
ptr = head;
int ekp, i;
fscanf(f, "<%d>\n", &ekp);
//Edw 3erw poses ekpompes exw kai 8a ftia3w ena struct gia tin ka8e mia
Emmission_read(f, ptr->anEmmission);
for (i = 1; i < ekp; i++) {
ptr->next = mallocwarp(sizeof(TVNodeType));
ptr = ptr->next;
Emmission_read(f,ptr->anEmmission);
ptr->next = NULL;
}
printf("%d Top read\n",ekp);
}
当我使用emmission_read
一次时,一切正常。我不认为这是malloc_
问题,也不是其他功能的问题。
答案 0 :(得分:1)
从您的代码中可以看出TVNodeType
是指针类型。然后你的内存分配应该是mallocwarp(sizeof(TVNodeType *));
(由于user3121023而产生的信用)