【发布时间】:2011-10-15 06:44:53
【问题描述】:
我正在用 C 语言编写一个基于双向链表的代码。我错误地认为通过执行 free(head_node) 来删除头节点。随着运行的进行,我可以看到计算机速度变慢(这显然是由于内存泄漏)。我搜索了 stackoverflow 和其他网站,我通常遇到的删除链接列表的代码是这样的:
Node* current = head;
while( current != NULL ) {
Node* next = current->Next;
free( current );
current = next;
}
当我在我的代码中尝试这个时,程序只是在 free 语句之后挂起,而没有返回调用这个函数的函数。上面的代码是否与双向链表相关?我的列表成员数据也包含很多指针。当我在其中一个链接上释放时,它是否释放了成员指向的所有数据?请使用代码 sn-ps 或参考书籍提出建议和澄清。 谢谢。
【问题讨论】:
标签: c linked-list free