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

    [C] Controllo su pila: vuota/piena

    Salve a tutti,
    ho questo problema:
    chiamo una funzione che visita gli elementi di una pila e li cancella,
    quando ritorno alla funzione chiamante cima_p è stato cancellato ma comunque passa il controllo dell' if quindi mi da:
    Segmentation fault (core dumped)..

    codice:
    int main(void)
    {  
      /*funzione chiamante*/
      scorri_adiac_p = visita_archi_pila(cima_p);
      /*...*/
      if (cima_p != NULL)
         scorri_adiac_p = visita_archi_pila(cima_p);
    
      return(0);
    }
    /*scorre tutti gli elementi e li elimina*/
    arco_grafo_t *visita_archi_pila(elem_lista_t *cima_p)
    {
      for (;
            (cima_p != NULL);
            temp = cima_p, cima_p = cima_p->succ_p, free(temp)) 	
        {
          /*...*/
        }
    }
    credo che sia giusto che passi il controllo dell' if dato che in effetti cima_p è diverso da NULL..
    ma non so come aggirare il problema.. cioè che tipo di espressione si può mettere al posto di cima_p != NULL ?

    Grazie.

  2. #2
    Trovato!

    codice:
      
      if (!cima_p)
         scorri_adiac_p = visita_archi_pila(cima_p);
    al posto di

    codice:
      if (cima_p != NULL)
         scorri_adiac_p = visita_archi_pila(cima_p);
    Grazie.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.