Ich habe ein Problem, wo, wenn ich eine Funktion, die ich schrieb, um eine Struktur freizugeben mein Programm auf der ersten freien Anweisung beendet.Funktion zum Freigeben einer Struktur in C
Hier ist die Funktion:
void deleteJobNode(struct jobNode *node) {
free(node->burstTime);
free(node->jobIndex);
free(node->next);
free(node->priority);
free(node->remainingTime);
free(node);
}
Hier ist die Definition der Struktur und die Funktion benutzten Speicher zum struct zuzuteilen.
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;
}
Ich habe die freie Funktion wie vorgeschlagen bearbeitet:
void deleteJobNode(struct jobNode *node) {
free(node);
}
Jedoch habe ich diesen Fehler zur Laufzeit erhalten:
*** Error in `/home/jack7521/workspace/req1b/Debug/req1b': double free or corruption (fasttop): 0x00000000010c2090 ***
Bearbeitete den Code, um wie vorgeschlagen, ich bekomme immer noch einen Fehler –
Der Fehler ist wahrscheinlich an anderer Stelle in Ihrem Code. Bitte aktualisieren Sie Ihre Frage mit einem [minimalen, vollständigen, überprüfbaren Beispiel] (http://stackoverflow.com/help/mcve). – dbush
Sie sollten 'malloc' s Rückgabewert direkt überprüfen, nachdem Sie es aufgerufen haben. Hier versuchen Sie, auf die Strukturelemente zuzugreifen, um sie zu initialisieren, bevor Sie überprüfen, ob ein Nullzeiger zurückgegeben wurde. – jule