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

关于free指针的指针分量
typedef   struct   TypeLink  
{  
        char   *pcField;  
        char   *pcValue;  
        struct   TypeLink   *next;  
}Link;  

我会根据需要动态分配pcField和pcValue的空间,问题是,释放的时候出问题。提示段错误。肯定是指针问题。但是我以前编写类似函数没错啊。  
函数是:  
void   lib_Del_Link_All(Link   **node)  
{  
        if(*node==NULL)  
                return;  
        if((*node)-> next!=NULL)  
        {  
                lib_Del_Link_All(&(*node)-> next);  
        }  
        if((*node)-> next==NULL)  
        {  
                free((*node)-> pcField);//这里出错  
                free((*node)-> pcValue);//这里出错  
                *node=0;  
        }  
}  


------解决方案--------------------
怎么看后面两个if, 怎么觉得别扭.
自己gdb走一下吧
------解决方案--------------------
链表太长,递归调用,栈溢出.
------解决方案--------------------
用个while循环来free
------解决方案--------------------
不是原因,但也有这个问题:
free((*node)-> pcField);
free((*node)-> pcValue);
*node=0;
--〉
free((*node)-> pcField);
free((*node)-> pcValue);
free((*node));
*node=NULL;

------解决方案--------------------
lib_Del_Link_All(&(*node)-> next);
看不懂优先级了
改成
lib_Del_Link_All(&((*node)-> next));
试试