gpt4 book ai didi

c - 从结构中释放分配的内存

转载 作者:行者123 更新时间:2023-11-30 20:38:20 25 4
gpt4 key购买 nike

我正在向函数发送一个 struct Food ,该函数的工作是释放该结构分配的内存,但不释放该结构本身。

结构如下所示:

struct Food{
char * name;
char * foodGroup;
double calories;
char type;
struct Food * next;
};

char *name 和 char *foodGroup 是在另一个函数中分配的内存。

struct Food* temp = malloc(sizeof(struct Food));
temp->name = malloc(sizeof(temp->name)); /*ERROR?*/
temp->foodGroup = malloc(sizeof(temp->name)); /*ERROR?*/
temp->next = malloc(sizeof(struct Food));

释放分配的内存的函数如下所示:

void destroyElement(Food *theElement)
{
free(theElement->name); /*ERROR*/
free(theElement->foodGroup); /*ERROR*/
}

我使用 print 语句来确定段错误的位置,它看起来像是在 destroyElement 函数中。

最佳答案

不要使用 malloc(sizeof(temp->name)),而是尝试 malloc(sizeof(您想要放入 temp->name 中的内容)

看起来您正在尝试获取 sizeof(temp->name),这是您首先尝试进行 malloc 的东西(如果 temp->name现在正在分配,它的大小是多少?)

这有意义吗?

如果没有,请随时给 Judi 发电子邮件,或向 Bucky 询问。 ;)

关于c - 从结构中释放分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382088/

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