C程序在第二次使用函数时崩溃

时间:2015-05-16 10:16:39

标签: c crash

尝试创建一个从文件读取格式化输入的程序,并在第二次使用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_问题,也不是其他功能的问题。

1 个答案:

答案 0 :(得分:1)

从您的代码中可以看出TVNodeType是指针类型。然后你的内存分配应该是mallocwarp(sizeof(TVNodeType *));

(由于user3121023而产生的信用)