链表的自由行为

Free behavior with linked lists

仅通过移动指针从链表中删除元素时。链表中的元素不再与链表相连后,free是否会清除内存?

除非您明确释放它,否则不会。 free 接受一个指针并将该内存标记为准备好供将来使用。

您必须释放该链表元素使用的内存,然后移动您的指针。如果在释放元素之前丢失了指向该元素的所有指针,则无法释放它,从而造成内存泄漏。

free 将释放您指向的任何内容。魔法不会发生任何事情。您必须在未链接的元素上调用 free

您所希望的(不再使用时自动释放内存)由引用计数指针(如 C++ 中的 shared_ptr)或垃圾收集(在 C# 中,Java, javascript,...)

我假设 "Will free get rid of the memory..." 指的是 free() 函数。是的,free() 函数将释放由 单个 malloc()calloc()realloc() 调用分配的所有内存。

确保在调用 free() 之前已完全取消链接条目。调用 free() 后对内存的任何使用(读取或写入)都是未定义的行为。