提问人: 提问时间:11/20/2021 更新时间:11/20/2021 访问量:73
1 个区块中的 12 个字节在丢失记录中仍可访问
12 bytes in 1 blocks are still reachable in loss record
问:
我正在使用 C 并想创建一个包含 char 值的双向链表。我还有另一个文件供老师用来测量大 O 符号,所以我确定它是正确的。但是当我运行它时,我从终端得到一个 zsh:分段错误。
我通过 valgrind 运行它,它给了我标题中提到的错误,并提到了以下函数,更具体地说是 Malloc 和 strdup 命令。我不确定这里出了什么问题,对我来说看起来不错,所以希望在这里得到一些帮助。
下面是头文件中的结构:
struct node
{
struct node *next;
struct node *prev;
char *value;
};
下面是在主文件中创建节点的函数:
static struct node *make_node(const char *value)
{
struct node *result = malloc(sizeof(struct node));
result->value = strdup(value);
result -> next = NULL;
result -> prev = NULL;
return result;
}
为了更好地衡量,这里是调用make_node
ListPos list_insert(ListPos pos, const char *value)
{
struct node *node = make_node(value);
struct node *before = pos.node->prev;
struct node *after = pos.node;
node->next = after;
after->prev = node;
node->prev = before;
before->next = node;
pos.node = node;
return pos;
}
答: 暂无答案
上一个:C - 内存泄漏,函数返回字符*
评论
pos.node->prev
NULL
NULL
before
after
NULL
before
NULL