链表的自由行为
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() 后对内存的任何使用(读取或写入)都是未定义的行为。
仅通过移动指针从链表中删除元素时。链表中的元素不再与链表相连后,free是否会清除内存?
除非您明确释放它,否则不会。 free
接受一个指针并将该内存标记为准备好供将来使用。
您必须释放该链表元素使用的内存,然后移动您的指针。如果在释放元素之前丢失了指向该元素的所有指针,则无法释放它,从而造成内存泄漏。
free 将释放您指向的任何内容。魔法不会发生任何事情。您必须在未链接的元素上调用 free
您所希望的(不再使用时自动释放内存)由引用计数指针(如 C++ 中的 shared_ptr)或垃圾收集(在 C# 中,Java, javascript,...)
我假设 "Will free get rid of the memory..." 指的是 free()
函数。是的,free()
函数将释放由 单个 malloc()
、calloc()
或 realloc()
调用分配的所有内存。
确保在调用 free()
之前已完全取消链接条目。调用 free() 后对内存的任何使用(读取或写入)都是未定义的行为。