|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 439
|
Problema con una lista (Il c è vivo????)
Ho un problema creo il primo elemento di una lista rametto (in un altra parte del programma) dopodichè se da testiera ricevo l'ok provo ad inserire altri elementi nella lista rametto copiandoli dalla lista capa, sapreste dirmi perchè appena mando in esecuzione va in crash appena fa il malloc??? cercate di aiutarmi please!!!!!!!
![]() ![]() Codice:
while (rametto!=NULL) rametto=rametto->succo; rametto->succo=(struct lista *)malloc(sizeof(struct lista)); rametto=rametto->succo; rametto->inf=capa->inf; rametto->succo=NULL; capa=capa->succ; |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4741
|
stai accedendo a degli oggetti attraverso dei puntatori che puntano a loro
con questo codice: Codice:
while (rametto!=NULL) rametto=rametto->succo; ![]() l' ultimo oggetto nella lista avra' un puntatore non nullo che punti a lui stesso, ma un puntatore randomico (o ben che vada, nullo, se lo inizializzi nel costruttore dell' oggetto rametto) al suo successore, ancora non esistente quindi salti in un punto che sicuramente non contiene un oggetto ... a me hanno insegnato che la routine di iterazione su liste, alberi, ecc debba controllare la validita' del puntatore al successore Codice:
if (elementPtr -> next)
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2000
Città: Bari-Brindisi-Lecce e prov
Messaggi: 424
|
Sono un po' arrugginito ma ci provo.
Tu fai il while sino a che rametto diventa null, a questo punto assegni alla locazione rametto->succo il risultato del malloc. Ma rametto->succo e' una locazione non allocata, probabilmente fa riferimento ad una parte del sistema operativo, da qui il crash. Sempre se non sbaglio, devo ricominciare a studiarmi il c. Byez
__________________
VoIp Gratis - Adsl senza canone telecom Ho trattato con: adarkar,Bobosassa, matrix866,M@t,k|o, percky,s5otto, Rospaccio, CluRaCaN, Igor,Zizziry, bokkakesballa, Pex,freewilly, Umbyboy,DAVO, nathbigga, fabiuxx ed altri. Diffidate di quinnuxxa |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() Sì ... a parte gli scherzi ho capito ... succo è il puntatore next. ![]() Non funziona per questo motivo: con il while vai a cercare l'ultimo elemento ma facendo come hai fatto, finito il while, rametto vale NULL!!! Quindi non puoi usare il puntatore in rametto. Ti devi fermare prima. Prova a cambiare il while in: Codice:
while (rametto->succo!=NULL) rametto=rametto->succo;
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4741
|
Quote:
![]()
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:37.