数据结构学习小记-malloc,free
malloc的用法
typedef struct Node
{
int data;
Node *pre;
Node *next;
}Node;
void main()
{
Node *head;
head = (Node*)malloc(sizeof(Node));
}
上面的代码我们是为Node这个结构体开辟了一个内存空间,并将内存空间的首地址赋值给了head这一个结构体指针。
函数中的malloc
typedef struct Node
{
int data;
Node *pre;
Node *next;
}Node;
void create(Node* head,int data)
{
Node *temp = (Node*)malloc(sizeof(Node));
}
void main()
{
Node *head;
head = (Node*)malloc(sizeof(Node));
}
这里我们新增加了一个create函数,在这个函数中我们创建了一个局部变量temp,temp是一个指针变量。同样地,开辟内存空间并将首地址赋值给temp,当这个函数结束后,temp这一变量的内存空间会被回收,但是他指向的地址不受影响,也就是说,如果这里的temp是链表的一个节点,那么这个节点不受影响,链表还是连续的。
函数中的free
typedef struct Node
{
int data;
Node *pre;
Node *next;
}Node;
void create(Node* head,int data)
{
Node *temp = (Node*)malloc(sizeof(Node));
temp=NULL;
free(temp);
}
void main()
{
Node *head;
head = (Node*)malloc(sizeof(Node));
}
这里我们加入了一个free函数,free将temp所指向的那一块内存块给清除了。如果temp是链表的一个节点,那么这个链表就断了。