C - 包含结构类型的结构上的malloc / free

时间:2014-01-04 14:51:40

标签: c struct linked-list malloc free

我有一个关于如何正确free指向结构类型的指针的快速问题。使用链接列表的示例,请说:

struct l_node {
    int data; 
    struct l_node *next; 
    struct l_node *prev; 
}; 

typedef struct l_node node;

struct l_list {
    node *head; 
    node *tail; 
};

typedef struct l_list llist;

如果我有一个函数,调用make_list调用malloc只为llist类型分配空间,而不是其中的节点类型,我是否需要调用{{1}对于free内的两个节点指针以及列表,或者因为我没有为它们调用struct l_node,是不是malloc

1 个答案:

答案 0 :(得分:1)

如果不使用malloc获取指针,则不应free,因为这会导致未定义的行为。 为了不造成内存泄漏,您应该free malloc编辑的内容。

某些库函数将返回需要释放的指针,因为它们使用malloc为您创建指针。 strdup就是这样一个例子。