gpt4 book ai didi

c - Valgrind 神秘的无效写入大小 8 错误

转载 作者:行者123 更新时间:2023-12-04 11:34:15 24 4
gpt4 key购买 nike

我进行了广泛的搜索,但没有找到答案,所以最好的选择是问我自己的问题。我目前正在为大学做一项作业,要求我们构建一个具有键和值字符串的节点。

我构建了以下节点以及以下两个函数:

typedef struct node_t
{
char *key;
char *data;
} * Node;

Node nodeCreate()
{
Node node = NULL;
node = malloc(sizeof(Node));
if (node == NULL)
return NULL;
node->key = NULL;
node->data = NULL;
return node;
}
void nodeDestroy(Node node)
{
if (node == NULL)
return;
if (node->key != NULL)
free(node->key);
if (node->data != NULL)
free(node->data);
free(node);
}

但是,上面的代码给了我以下错误: Valgrind error message

现在,这是情节的转折。 如果我删除数据代码,代码可以正常工作并且 valgrind 不会出现任何问题

我找不到任何解决办法,这让我无法完成一项艰巨的任务,而且我不知道该怎么办。 任何帮助表示赞赏。

最佳答案

node = malloc(sizeof(Node));

正在分配仅足以容纳一个指针的空间。

另一方面,该结构有 2 个指针,因此通常它会大于一个指针。

该行应该是

node = malloc(sizeof(struct node_t));

node = malloc(sizeof(*node));

分配足够的空间。

关于c - Valgrind 神秘的无效写入大小 8 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61709532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com