Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [c]Come disallocare una lista concatenata?

    Ciao a tutti..come disalloco dalla memoria una "lista di liste"?
    Cioe' ogni volta che carico il mio programmino mi deve disallocare quella precedentemente allocata.Come si fa?

  2. #2

    Re: [c]Come disallocare una lista concatenata?

    Originariamente inviato da maninblack
    Ciao a tutti..come disalloco dalla memoria una "lista di liste"?
    Cioe' ogni volta che carico il mio programmino mi deve disallocare quella precedentemente allocata.Come si fa?
    No deve essere il programma che l'ha allocata a liberare la memoria prima di terminare,non puoi farla deallocare ad un'altro programma che carichi successivamente,gli spazi di indirizzamento sono separati,non sarebbe possibile e nemmeno tanto logico.No semplicemente prima di uscire usi free(puntatoreablocco) su ogni blocco di memoria che hai allocato.In realtà in genere il sistema operativo provvede a liberare la memoria allocata da ogni programma già di suo,però non è una cosa che devi dare per certa quindi la liberazione della memoria va fatta.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Lo devo fare xke' fa parte di un progetto.Puo' capitare ke durante il mio prog questo possa essere inizializzato senza uscire pero'..quindi mi servirebbe il codice,cosi' lo visiono un po'

  4. #4
    Originariamente inviato da maninblack
    Lo devo fare xke' fa parte di un progetto.Puo' capitare ke durante il mio prog questo possa essere inizializzato senza uscire pero'..quindi mi servirebbe il codice,cosi' lo visiono un po'
    Non ho capito cosa può essere inizializzato senza uscire?Spiegati meglio
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    sto creando un giochino in pratica..e a partita finita,scegliendo "crea nuova partita" deve ricrearmi la lista pero' disallocando quella precedentemente usata..

  6. #6
    Ok ora è più chiaro,non ti eri spiegato molto bene,dovresti postare un po di codice che faccia capire come è fatta la tua struttura dati.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    si scusami..cmq e' una struttura a lista di liste fatta cosi'

    //struttura per le sottoliste collegate a ogni nodo della lista principale
    typedef struct _parola
    {
    int flagMist;
    char word[MAXSTRING];
    struct _parola *next;
    struct _parola *prev;

    }parola;

    //struttura della lista principale
    typedef struct _index
    {
    int flagMistI;
    char wordI[MAXSTRING];
    parola *p;
    struct _index *next;
    struct _index *prev;

    }index;

  8. #8
    aiuto!!!!!!!!Non mi dice nessuno come si fa x favore?????

  9. #9
    Originariamente inviato da maninblack
    si scusami..cmq e' una struttura a lista di liste fatta cosi'

    //struttura per le sottoliste collegate a ogni nodo della lista principale
    typedef struct _parola
    {
    int flagMist;
    char word[MAXSTRING];
    struct _parola *next;
    struct _parola *prev;

    }parola;

    //struttura della lista principale
    typedef struct _index
    {
    int flagMistI;
    char wordI[MAXSTRING];
    parola *p;
    struct _index *next;
    struct _index *prev;

    }index;
    codice:
    void FreeSingleList(parola* start)
    {
    
    	parola* toFree;
       while(start)
       {
       	toFree=start;
          start=start->next;
          free(toFree);
       }
    }
    void FreeAll(index *head)
    {
    index* toFree;
      while(head)
      {
         toFree = head;
         head = head ->next;
         FreeSingleList(toFree->p)
         free(toFree);
      }
    }
    
    main()
    {
       FreeAll(myListOfListsHead);
    }
    Una cosa del genere dovrebbe andare,tieni conto che non ho potuto provarla dato il poco codice che mi hai postato quindi potrebbero esserci errori,ma con buone probabilità è corretta.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  10. #10
    Ovviamente i puntatori vanno anche reimpostati a NULL una volta liberata la memoria associata,fallo tu.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.