请问C语言运行到free(p)程序就卡住,这是为什么?

typedef char Elem;

typedef struct LStack {

Elem data;
struct LStack *next;
}LSNode,*PtrLSNode;

int InitLSNode_Head(PtrLSNode *LSNode);
int PushLSNode(PtrLSNode *LSNode, Elem *e);
int PopLSNode(PtrLSNode *LSNode, Elem *e);

int PopLSNode(PtrLSNode *LSNode, Elem *e) {
PtrLSNode p = NULL;
p = (*LSNode)->next;
if (NULL == (*LSNode)->next) return FALSE;
*e = p->data;
(*LSNode)->next = p->next;
free(p);
return OK;
}

猛跑小猪
浏览 1495回答 1
1回答

繁华开满天机

free() C语言函数 头文件:malloc.h或stdlib.h 作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间的函数 使用后该指针变量一定要重新指向NULL,防止野指针出现,有效 规避误操作。 free() C语言函数 头文件 malloc.h或stdlib.h 作    用 释放内存空间 函数名: free 功 能: 与malloc()函数配对使用,释放malloc函数申请的动态内存。(另:对于free(p)这句语句,如果p 是NULL 指针,那么free 对p 无论操作多少次都不会出问题。如果p 不是NULL 指针,那么free 对p连续操作两次就会导致程序运行错误。) 用 法: void free(void *ptr);
打开App,查看更多内容
随时随地看视频慕课网APP