free函数负责释放空间,具体流程是更新可用空间链表,将这段空间标记为可用,但不会将指针置空,在调用free函数空间后用该立即手动将指针置空。
malloc函数返回申请空间的首地址,free函数接受的参数也应该是这个首地址,因此在使用过程中一动不能失去对这个首地址的控制。如果修改了指向首地址的指针,而首地址没有与其他指针关联,就无法调用free函数正确地释放空间。
malloc函数和free函数总是成对出现,不存在调用一次malloc函数后需要修改多次free函数的情况。free函数可以一次释放malloc函数分配的所有空间。
malloc函数申请的空间都是从堆中获取的,需要手动调用free函数释放,而栈空间由系统负责分配和释放。