Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Sardegna
    Messaggi
    18

    [C] Usare free() con una lista

    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?
    Ultima modifica di alemutasa; 16-12-2015 a 17:37

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.