У меня проблема, когда, когда я вызываю функцию, которую я написал для бесплатной структуры, моя программа завершается первой свободной инструкцией.Функция освобождения структуры в C
Вот функция:
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 ***
Отредактируйте код, как задумано, я все равно получаю сообщение об ошибке –
Возможно, ошибка в том или иконе вашего кода. Обновите свой вопрос с помощью [Минимального, полного, проверяемого примера] (http://stackoverflow.com/help/mcve). – dbush
Вы должны проверить возвращаемое значение malloc 's сразу после того, как вы его вызвали. Здесь вы пытаетесь получить доступ к элементам структуры, чтобы инициализировать их, прежде чем проверять, был ли возвращен нулевой указатель. – jule