LISTE headInsert (dubbio sui puntatori)

di il
5 risposte

LISTE headInsert (dubbio sui puntatori)

La domanda è :'C'è un modo per capire se un puntatore è stato inizializzato o meno? Cioè se punta a una zona di memoria valida o no?''.
Essendo una lista semplice un trenino di celle,ognuna delle quale contenente in una parte un valore e nell'altra l'indirizzo di memoria alla cella successiva. Mi domandavo se nel caso dovessi progettare una funzione che inserisca in testa un nuovo elemento,e la lista passatami per argomento fosse un puntatore penzolante 'dangling pointer' potessi gestirlo in qualche modo con una condizione,che riesca a capire che si tratta proprio di un puntatore non valido.Così che,nel caso lo fosse, potessi inizializzarlo con un primo elemento e segnare nullptr il puntatore della cella appena inserita.

5 Risposte

  • Re: LISTE headInsert (dubbio sui puntatori)

    Secondo te come si potrebbe mai controllare se la zona puntata sia valida o meno?!

    In ogni caso la soluzione si basa su un diverso approccio al problema, ossia fare in modo che non ci siano dangling pointer.
  • Re: LISTE headInsert (dubbio sui puntatori)

    No non è possibile, bisogna sempre inizializzare tutti gli elementi
  • Re: LISTE headInsert (dubbio sui puntatori)

    Nippolo ha scritto:


    Secondo te come si potrebbe mai controllare se la zona puntata sia valida o meno?!

    In ogni caso la soluzione si basa su un diverso approccio al problema, ossia fare in modo che non ci siano dangling pointer.
    Già, sarebbe giusto fare in modo che non ce ne siano, ma qualora il programma nè abbia di puntatori penzolanti al posto di andare a cercarli e aggiustarli, sarebbe bello che ci fosse un qualche meccanismo o complesso di istruzioni che lo faccia in automatico,identificandoli e intervenendo in modo adeguato...Però è strano che sia impossibile trovare un modo per riconoscerli se noi umani lo facciamo con tanta facilità.
  • Re: LISTE headInsert (dubbio sui puntatori)

    Comunque sia grazie per le risposte
  • Re: LISTE headInsert (dubbio sui puntatori)

    No, ma inizializzando a nullptr i puntatori invalidi si può fare il controllo.

    Un mio consiglio è comunque usare la libreria standard il più possibile (inserimento in testa, in coda, accesso diretto,... sono tutte funzioni che ti vengono 'in omaggio' quando usi le strutture del cpp), in questo modo il problema di allocazione e deallocazione si riduce moltissimo, inoltre le classi sono molto più ottimizzate quindi si hanno prestazioni maggiori.

    Qui c'è tutto lo scibile necessario sulla libreria standard del CPP.

    Poi dipende tutto dal tuo obiettivo: se devi 'imparare' a programmare e vedere come funzionano le cose 'sotto il cofano' allora smazzarsi i puntatori "stile C" non può farti che bene, se invece il tuo obiettivo è uscire con qualcosa di funzionante, efficiente e relativamente 'comodo' da manutenere allora la la libreria standard è la tua migliore amica.
Devi accedere o registrarti per scrivere nel forum
5 risposte