关于链表中内存的释放
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define ElemType int
typedef struct LNode
{
ElemType data;
LNode *next;
}*LinkList;
//初始化链表
void initialList(LinkList &l)
{
l = (LinkList)malloc(sizeof(LinkList));
if(!l)
exit(1);
l->next = NULL;
}
//删除链表
void deleteList(LinkList &l)
{
LinkList q;
while(l)
{
q = l->next;
free(l);
l = q;
}
}
在主函数中:
int main()
{
LinkList myList;
initialList(myList);
deleteList(myList);
return 0;
}
每次执行到deleteList就会出错,求教了。
[解决办法]
[解决办法]
l = (LinkList)malloc(sizeof(LinkList));
你申请了一个指针那么大小的空间,却把它赋值给大小为8个字节的一个结构体指针。
在free的时候,要求free掉8个字节的结构体空间,这个地方在检查堆空间的参数时,会判断出错。