【发布时间】:2012-11-21 06:16:49
【问题描述】:
我想在 C 中创建一个通用的链表。以下是节点的结构:
typedef struct node {
void *value;
int size; // n bytes
ind index; // index of the node
struct node *next;
} Node;
我的 delete_node 函数如下。搜索函数发送一个指向我要删除的节点的指针。
Node *search_list(Node *list, void *data, int n_bytes);
int delete_node(Node *list, Node *to_be_deleted); // returns 1 on success
在delete_node 函数中,我想释放void *value 指向的内存,然后释放分配给Node 本身的内存。
free(to_be_deleted->value); // Would this work??
free(to_be_deleted);
由于它是void 指针,我们不知道它所指向的对象占用了多少字节。我们如何释放内存呢?
对不起,如果这是一个愚蠢的问题?
【问题讨论】:
-
你很少计算 C 中的位数;字节——是的,经常,但比特——不经常。
-
@JonathanLeffler 哦,是的,糟糕的命名。我把它改成了 nbytes :)
标签: c memory-leaks malloc free