指针释放函数free()的一处使用
正在试图编写一个链栈,结构体定义如下:typedef struct node
{
char data[10];
struct node *pre;
}Linkstackelem;
typedef struct{
Linkstackelem *top;
int length;
}Linkstack;
问题出在Pop函数中:
int Pop_Linkstack(Linkstack *S, char *dat)
{
Linkstackelem *tmp;
if(S->length == 0)
{
printf("ERROR!\n");
return ERROR;
}
tmp = S->top->pre;
strcpy(dat, S->top->data);
//free(S->top->pre);****************这句没被注释前程序执行会出错,导致S->top归零,注释后就好了
free(S);
S->top = tmp;
S->length --;
return OK;
}
求教,函数中S->top指向一个栈节点,这个节点中的pre也是一个指针,那么用free函数释放这个指针应该是对的;百度的意见就是对结构体指针要一层一层往外释放,然后我就不明白我怎么错了,求指点