【发布时间】:2019-05-23 00:14:18
【问题描述】:
我是 c 中链表的新手,并在 c 中编写了一个小程序,创建节点,当我尝试释放分配的内存时,我的程序崩溃了。我不知道是什么导致了这个错误,所以我希望你能帮助我。我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct list
{
int data;
struct list *link;
} node;
node *createnode();
int main()
{
node *a = createnode(); //create first node
node *start = a;
printf("Value of first node: ");
scanf("%d", &a->data);
for(int j = 0; j<3; j++) //create three nodes
{
a->link = createnode();
a = a -> link;
printf("Value of node %d: ", j+1);
scanf("%d", &a->data);
if(j==2)
{
a -> link = NULL;
}
}
a = start;
while(a != NULL)
{
printf("%d -> ", a->data);
a = a -> link;
if(a==NULL)
{
printf("null");
}
}
a = start;
while(a != NULL)
{
a = start;
start = a -> link;
free(a);
}
return 0;
}
node *createnode()
{
return malloc(sizeof(node));
}
【问题讨论】:
-
@kiner_shah 不,
a->link = createnode();完成下一个循环,否则存在内存泄漏
标签: c memory-management linked-list