我执行在C通用链表内存管理,同时实现用C
struct Node
{
void* data;
struct Node* next;
};
是更好地让有关分配和释放用户担心什么数据将指向一个通用的链表库,或我们应该自己做吗?如果留给用户,他们可能会将堆栈对象存储到列表中,以后可能会导致问题。我只是想知道哪种设计更好。
我执行在C通用链表内存管理,同时实现用C
struct Node
{
void* data;
struct Node* next;
};
是更好地让有关分配和释放用户担心什么数据将指向一个通用的链表库,或我们应该自己做吗?如果留给用户,他们可能会将堆栈对象存储到列表中,以后可能会导致问题。我只是想知道哪种设计更好。
拇指的一般规则是通常:谁分配内存 - 负责释放它。
就你而言,你应该照顾自己的节点,用户应该负责data
。
这是有道理的,因为:
data
- 它可能是一个复杂的类型,需要在内部领域释放为好,或者它可能如果试图将指向堆栈中分配空间,这将导致错误释放它。
首先不要使用'void *'。 –
@EdHeal - 为什么不呢? –
用户可能想要存储堆栈对象,为什么不呢。或者是静态的。 – nshy