您的位置:程序门 -> c/c++ ->



简单动态链表问题,麻烦各位哥哥姐姐了


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


简单动态链表问题,麻烦各位哥哥姐姐了
发表于:2007-06-30 08:50:03 楼主

简单动态链表问题

typedef   struct   listnode{
char   pt[128];
listnode   *next;
}node;

node   *tmp;
node   *head;
node   *work;

work   =   (node   *)malloc(sizeof(listnode));
memset(tmp-> pt,0,128);
tmp-> next   =   null;

int     i   =   0;
while(i   <   10)
{
if(i   ==0)
{
strcpy(work-> pt, "cde ");
head   =   work;
}
else
{
strcpy(work-> pt, "abc ");
tmp-> next   =   work;
}
tmp   =   work;
work   =   (node   *)malloc(sizeof(listnode));
memset(work-> pt,0,128);
work-> next   =   null;
i++;
}
tmp-> next   =   null;


程序结束后:
free(head);

为什么work申请的内存没有释放呢?
要不要加上free(work)啊
谢谢大家的帮助啊
发表于:2007-06-30 09:04:101楼 得分:0
每个节点都要释放的
这个代码哪弄来的
work   =   (node   *)malloc(sizeof(listnode));
memset(tmp-> pt,0,128);//tmp节点都没分配内存就进行赋值操作,明显有问题啊
tmp-> next   =   null;
发表于:2007-06-30 09:47:482楼 得分:0
typedef   struct   listnode{
char   pt[128];
listnode   *next;
}node;

node   *tmp;
node   *head;
node   *work;

work   =   (node   *)malloc(sizeof(node));
memset(work-> pt,0,128);
work-> next   =   null;

int     i   =   0;
while(i   <   10)
{
if(i   ==0)
{
strcpy(work-> pt, "cde ");
head   =   work;
}
else
{
strcpy(work-> pt, "abc ");
tmp-> next   =   work;
}
tmp   =   work;
// work   =   (node   *)malloc(sizeof(listnode));
                  work   =   (node   *)malloc(sizeof(node));
memset(work-> pt,0,128);
work-> next   =   null;
i++;
}
tmp-> next   =   null;
free(work);               //释放最后没连到链表中的结点..
________________________________________________________________________________
node   *p                     //释放链表结点
for   (i=0;   i <10;   i++)
{
          p   =   head-> next;
          free(head);
          head   =   p;
}


快速检索

最新资讯
热门点击