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

乔治·萨吉|

我到处搜寻,没有找到答案,所以最好的选择是问我自己的问题。我目前正在为大学做作业,要求我们建立一个具有键和值字符串的节点。

我构造了以下节点以及以下两个功能:

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错误消息

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

我找不到任何修复程序,这使我无法完成一项繁重的任务,而且我也不知道该怎么办。任何帮助表示赞赏。

朱利安·塞里
node = malloc(sizeof(Node));

struct node_t由于您的定义方式,以上内容只会分配必要的大小来存储指向的指针Node

将行更改为:

node = malloc(sizeof(*node));

或将Node定义为的别名,struct node_t而不是指向它的指针。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

c Valgrind读取大小4无效->分段错误

来自分类Dev

cpp-valgrind-大小为8的无效读取

来自分类Dev

Valgrind中大小为4的无效读/写

来自分类Dev

使用Valgrind在C中无效读取大小8的分段错误

来自分类Dev

Valgrind-strcpy的大小为1的无效写入

来自分类Dev

valgrind错误:无效的读取

来自分类Dev

Valgrind:抛出自定义异常时为“无效的读取大小1”

来自分类Dev

为什么Valgrind在PETSc中分配char *时报告大小写为8的无效写入?

来自分类Dev

valgrind对大小1的无效读取(realloc使错误“释放后使用条件”)

来自分类Dev

Valgrind:无效读取的8号错误

来自分类Dev

即使对于NULL分配,大小8 valgrind的无效写入

来自分类Dev

无效的写入Valgrind

来自分类Dev

正确使用strcpy()并避免在valgrind中读取和写入大小错误

来自分类Dev

分段错误,大小为4的无效写入

来自分类Dev

Valgrind错误:使用由struct和malloc构成的列表时,大小为8的无效写入

来自分类Dev

我在C中运行Valgrind时收到大小为8的无效读取

来自分类Dev

Valgrind:大小为1的无效读/写

来自分类Dev

cpp-valgrind-大小为8的无效读取

来自分类Dev

Valgrind无效写入

来自分类Dev

大小8的无效读取,大小8(Valgrind)的无效写入

来自分类Dev

C-字符串数组和神秘的Valgrind错误

来自分类Dev

Valgrind:抛出自定义异常时,“读取大小为1无效”

来自分类Dev

C ++无效的读取大小4 valgrind

来自分类Dev

Valgrind:无效读取的8号错误

来自分类Dev

读取的大小无效-C valgrind

来自分类Dev

使用valgrind时无效读取大小1

来自分类Dev

解决 valgrind 中的无效写入错误

来自分类Dev

Valgrind 的无效写入

来自分类Dev

Valgrind 错误无效读取大小 4

Related 相关文章

热门标签

归档