Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    100

    [c]deallocazione corretta oggetto di tipo grafo

    codice:
      
     4. /** elemento lista di adiacenza */  
       5. typedef struct edge {  
       6.  /** etichetta nodo adiacente (indice nell'array) */  
       7.  unsigned int label;      
       8.  /** peso dell'arco (distanza in km) */  
       9.  double km;        
      10.  /** prossima adiacenza*/  
      11.  struct edge * next;      
      12. } edge_t;  
      13.  
      14. /** lunghezza massima label -- in caratteri */  
      15. #define LLABEL 128  
      16. /** lunghezza massima distanza in km -- in caratteri */  
      17. #define LKM 32  
      18.  
      19. /** nodo del grafo */  
      20. typedef struct node {  
      21. /** etichetta informativa (nome citta) */  
      22.    char* label;        
      23. /** lista di adiacenza */  
      24.    edge_t * adj;            
      25. } node_t;  
      26.  
      27. /** Grafo non-orientato rappresentato come array 0 .. (N-1) di vertici  
      28. */  
      29. typedef struct graph {  
      30.  /** array dei  nodi */  
      31.  node_t * node;    
      32.  /** numero nodi */  
      33.  unsigned int size;        
      34. } graph_t;  
      35.  
      36.  
      37.
    ciao ragazzi una domanda per deallocare correttamente tutta la memoria di un puntatore a una variabile graph_t devo fare le seguenti deallocazioni?
    -per ogni suo nodo:
    deallocare lo spazio occupato dalla sua label
    deallocare ogni elemento della lista di adiacenza di quel nodo
    infine deallocare il puntatore di ogni nodo e la deallocazione del puntatore alla variabile graph_t,
    sbaglio qualcosa o dimentico qualcosa? e' possibile evitare tutte queste deallocazioni ?
    grazie in anticipo e scusate il disturbo
    df

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326

    Re: [c]deallocazione corretta oggetto di tipo grafo

    Originariamente inviato da esoni
    ciao ragazzi una domanda per deallocare correttamente tutta la memoria di un puntatore a una variabile graph_t devo fare le seguenti deallocazioni?
    -per ogni suo nodo:
    deallocare lo spazio occupato dalla sua label
    deallocare ogni elemento della lista di adiacenza di quel nodo
    infine deallocare il puntatore di ogni nodo e la deallocazione del puntatore alla variabile graph_t,
    sbaglio qualcosa o dimentico qualcosa?
    Corretto. La regola generale è che ad ogni malloc()/calloc() deve corrispondere una free().

    Originariamente inviato da esoni
    e' possibile evitare tutte queste deallocazioni ?
    No, se ad una free() passi un puntatore ad un tipo di dato strutturato, questa non va ad analizzare il tipo per deallocare automaticamente lo spazio anche per i suoi campi.
    every day above ground is a good one

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.