读书人

关于free指针的指针分量,该怎么处理

发布时间: 2012-04-08 14:38:30 作者: rapoo

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

读书人网 >UNIXLINUX

热点推荐