我到处搜寻,没有找到答案,所以最好的选择是问我自己的问题。我目前正在为大学做作业,要求我们建立一个具有键和值字符串的节点。
我构造了以下节点以及以下两个功能:
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不会出现任何问题。
我找不到任何修复程序,这使我无法完成一项繁重的任务,而且我也不知道该怎么办。任何帮助表示赞赏。
node = malloc(sizeof(Node));
struct node_t
由于您的定义方式,以上内容只会分配必要的大小来存储指向的指针Node
。
将行更改为:
node = malloc(sizeof(*node));
或将Node定义为的别名,struct node_t
而不是指向它的指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句