malloc的问题
#include <stdio.h>
#include<malloc.h>
typedef char datatype;
typedef struct node{
datatype data;
struct node *next;
} listnode;
typedef listnode *linklist;
listnode *p;
linklist createlist(void)
{
char ch;
linklist head;
listnode *p;
head=NULL;//初始化为空
ch=getchar( );
while (ch!='\n'){
p=(listnode*)malloc(sizeof(listnode));/*分配空间*/
p->data=ch;/*数据域赋值*/
p->next=head;/*指定后继指针*/
head=p;/*head指针指定到新插入的结点上*/
ch=getchar( );
}
return (head);
free(p);
}
main()
{
linklist newlist=createlist();
}
我不太明白malloc 的用法,什么时候该用free,我在上面的程序上加上了free(),不知道对不对,希望大家告诉我,指点我,
在此谢过!