关于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;
}

白衣染霜花
浏览 1629回答 1
1回答

BIG阳

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