У меня есть такая функция ниже, и я хотел бы освободить память, выделенную переменной temp1
в функции вызывающего абонента.
// Code to insert element at Nth position
void Insertion (int num, Node **head)
{
// I can't free this variable in this function because
// it will be used in future to navigate through the list.
// I would like to avoid global variables as well.
Node *temp1 = (Node*)malloc(sizeof(Node));
temp1->data = data;
temp1->next = NULL;
Node *temp2 = *head;
for (int i = 0; i < position - 2; i++)
{
temp2=temp2->next;
}
temp1->next = temp2->next;
temp2->next = temp1;
return 0;
}
Функция вызывающего абонента выглядит следующим образом
int main(void)
{
Node *head = NULL;
Insertion (30, 1, &head);
.....
.....
return 0;
}
Кто-нибудь знает, какие у меня есть варианты?
- Должен ли я изменить тип возвращаемого значения
Insertion
на void *
с void
и затем освободить функцию? У меня есть сильное чувство, что я делаю что-то недопустимое здесь. - Должен ли я передавать temp1 в качестве параметра? (это усложнит ситуацию, поэтому я бы хотел избежать такого подхода)