【发布时间】:2011-06-24 13:23:00
【问题描述】:
我有一个通用链表实现,其中包含一个指向数据的 void* 节点结构和一个包含对 head 的引用的列表结构。现在这是我的问题,链表中的一个节点可能通过其 void* 持有对另一个链表的引用。当我释放包含较小列表的较大列表时,这会导致内存泄漏。所以我想知道有没有办法检查 void* 是否指向另一个列表,所以我跟随并释放它或者只是数据。
如果我在我的结构的开头添加一个键,我可以通过取消引用 void* 来检查它并找出它是一个列表?
编辑:调用者不会插入他们由我的函数插入的较小列表我不希望调用者只处理他们持有指针的列表。
【问题讨论】:
-
我会把释放数据的部分留给用户,所以他/她应该知道如何
free每个元素指向的数据。链表的工作只是链接所有这些数据指针。
标签: c pointers data-structures linked-list void-pointers