链表这种数据结构在C语言中必不可少,它可以实现线性表的动态存储,而链表又要靠malloc函数来实现。
malloc函数: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。
malloc函数的作用是让系统寻找空闲地址后为你分配一块指定大小的空间来给你使用,这一块空间其实要比你申请的空间大一些,它包含两个部分:1.你申请的空间;2.记录这个空间信息的空间。malloc使用结构体来储存空间信息,这个结构体是这样的:
struct mem_control_block {
int is_available; //一般来说应该是一个可用空间的首地址,但这里英文单词却显示出空间是否可用的一个标记
int size; //这是实际空间的大小
};
free函数接受一个指针,然后将指针指向的地址还给系统。(但它不会改变指针的指向,所以一般在free之后还要将指针置空,不然你的这个指针就会变成野指针)一般来说,malloc函数应该和free函数成对出现,防止向系统要的内存太多系统不高兴。
free()函数的源代码是这样的: