链表的自由行为

时间:2015-03-18 21:58:12

标签: c linked-list free

仅通过移动指针从链接列表中删除元素。在链表中的元素不再连接到列表后,是否会自由删除内存?

3 个答案:

答案 0 :(得分:2)

免费将释放你指出的任何内容。魔法没有任何事情发生。你必须在未链接的元素上免费打电话

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

答案 1 :(得分:1)

除非您明确释放它。 free接收指针并将该内存标记为可供将来使用。

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

答案 2 :(得分:0)

我认为“将释放内存......”指的是free()函数。是的,free()函数将释放由 malloc()calloc()realloc()调用分配的所有内存。

在致电free()之前,请确保您已完全取消关联该条目。在调用free()之后对内存(读或写)的任何使用都是未定义的行为。