日期:2014-05-16  浏览次数:20708 次

free导致程序被kill,为什么
if( fclose(Filefp) < 0 ){
     perror("fclose");
     return 0;
    }
    printf("fclose(Filefp) < 0\n");
    pf = pFileHead;
    if(pFileHead->next != NULL){
        pFileHead = pFileHead->next;   //从链表删除已经发送完毕的文件
        printf("address:%x\n",&pf);
        free(pf);    //释放内存
        printf("free(pf):pFileHead has been removed from list!next file :%s\n",pFileHead->name);
        return 1;
    }
pFileHead是单向链表头部,当删除第一个节点时程序被kill,free(fp),这一句之后就被kill了

------解决方案--------------------
在哪崩溃并不代表就是这几句有问题。
------解决方案--------------------
你删除的时候链表多大啊,pFileHead->name 这里操作不当也可能被kill。确认pFileHead的指针是否正常。
------解决方案--------------------
调试跟踪一下,哪一步coredump了
还有你给那么几句话也判断不出来的