gpt4 book ai didi

c - 在 C 中释放结构的函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:35:22 25 4
gpt4 key购买 nike

我遇到了一个问题,当我调用一个我写的函数来释放一个结构时,我的程序在第一个空闲指令处终止。

函数如下:

void deleteJobNode(struct jobNode *node) {
free(node->burstTime);
free(node->jobIndex);
free(node->next);
free(node->priority);
free(node->remainingTime);
free(node);
}

这里是结构体的定义和用于为结构体分配内存的函数。

struct jobNode {
struct jobNode *next;
int jobIndex;
int burstTime;
int remainingTime;
int priority;
};

struct jobNode *createJobNode(int newJobIndex, int newBurstTime, int newRemainingTime, int newPriority) {
struct jobNode *newNode = (struct jobNode *)malloc(sizeof(struct jobNode));
newNode->jobIndex = newJobIndex;
newNode->burstTime = newBurstTime;
newNode->remainingTime = newRemainingTime;
newNode->priority = newPriority;

if(newNode == NULL)
printf("Node Creation Error");

return newNode;
}

我已经按照建议编辑了免费功能:

void deleteJobNode(struct jobNode *node) {
free(node);
}

但是我在运行时遇到这个错误:

*** Error in `/home/jack7521/workspace/req1b/Debug/req1b': double free or corruption (fasttop): 0x00000000010c2090 ***

最佳答案

每个 malloc 都需要一个 free。您不需要释放 struct 的非动态字段,它们已经是 struct 本身的一部分,因此释放指向整个 struct 的指针> 足够了。

你只需要:

free(node);

关于c - 在 C 中释放结构的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40093219/

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