首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-08-28 
关于链表中内存的释放#include stdio.h#include malloc.h#include stdlib.h#define ElemType inttyp

关于链表中内存的释放
#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 &amp;l)
{
l = (LinkList)malloc(sizeof(LNode));
if(!l)
exit(1);
l->next = NULL;
}


改成sizeof(LNode)就可以了

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

热点排行