读书人

关于链表中内存储器的释放

发布时间: 2012-08-28 12:37:01 作者: rapoo

关于链表中内存的释放
#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就会出错,求教了。


[解决办法]

探讨

C/C++ code

//初始化链表
void initialList(LinkList &l)
{
l = (LinkList)malloc(sizeof(LNode));
if(!l)
exit(1);
l->next = NULL;
}


改成sizeof(LNode)就可以了

[解决办法]
l = (LinkList)malloc(sizeof(LinkList));
你申请了一个指针那么大小的空间,却把它赋值给大小为8个字节的一个结构体指针。
在free的时候,要求free掉8个字节的结构体空间,这个地方在检查堆空间的参数时,会判断出错。

读书人网 >C语言

热点推荐