Salve a tutti!
Sto cercando di capire come usare free() sui nodi di una lista. Il problema però non è su un programma specifico ma è più che altro teorico: come faccio a liberare lo spazio usato una volta che non mi serve più, quando non posso scorrere la lista senza creare errori di segmentation fault?
Per intenderci, avendo per esempio una lista di 10 nodi e una funzione che assegna un dato casuale, del tipo
codice:
//Dichiarazione di cosa contiene il tipo "Node"
typedef struct Node{
int data;
struct Node *next;
struct Node *prev;
} Node;
//Funzione che crea il nodo in testa e carica un numero random nel campo "data"
Node* addN(Node *prevNode){
Node *newNode = NULL;
newNode = malloc(sizeof(Node));
if(newNode == NULL){
printf("Error in memory allocation");
exit(EXIT_FAILURE);
}
newNode->num = 1 + rand() % 10;;
prevNode->next = newNode;
newNode->next = NULL;
newNode->prev = prevNode;
return newNode;
}
come faccio a non causare memory-leak quando ritorno 0 nel main()? Usando free() non potrei più accedere agli altri nodi della lista. Come posso fare?