Jac*_*son 2 c malloc free struct memory-management
我遇到一个问题,当我调用我编写的用于释放结构的函数时,我的程序在第一个释放指令处终止。
这是函数:
void deleteJobNode(struct jobNode *node) {
free(node->burstTime);
free(node->jobIndex);
free(node->next);
free(node->priority);
free(node->remainingTime);
free(node);
}
Run Code Online (Sandbox Code Playgroud)
这是结构体的定义以及用于为结构体分配内存的函数。
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;
}
Run Code Online (Sandbox Code Playgroud)
我已经按照建议编辑了免费功能:
void deleteJobNode(struct jobNode *node) {
free(node);
}
Run Code Online (Sandbox Code Playgroud)
但是我在运行时收到此错误:
*** Error in `/home/jack7521/workspace/req1b/Debug/req1b': double free or corruption (fasttop): 0x00000000010c2090 ***
Run Code Online (Sandbox Code Playgroud)
free每个你都需要一个malloc. 您不需要释放 a 的非动态字段struct,它们已经是其struct自身的一部分,因此释放指向整体的指针struct就足够了。
您只需要:
free(node);
Run Code Online (Sandbox Code Playgroud)