关于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));
试试