Šta je novo?

Ne mogu da nadjem gresku :(

Učlanjen(a)
04.12.2005
Poruke
314
Poena
319
code se kompajluje ali prilikom pokretanja ima segmentation fault. koristeci gdb vidim da je greska na 145 liniji u graph.c ili 38 main.c( tj traverse function) ali ne znam sta je problem. Predpostavljam neki memory leak. Moze li neko da pogleda?

hvala
 

Prilozi

Segmentation fault znači da preko nekog pokazivača gađaš memoriju koju si prethodno oslobodio (ili nisi ni alocirao). Moraš kodirati defanzivnije, slobodno ubacuj provere da li je neki pokazivač NULL pre nego što pristupaš onome na šta pokazuješ...
 
Izgleda da ti je pri pozivu traverse funkcije pokazivač vhead null ili pokazuje na oslobođenu memoriju. Morao bi da prođeš kroz debugger detaljno. Takođe na prvi pogled koda mi liči kao da ti funkcija add_vertex opasno curi memoriju i pri tom ne radi dobro. (možda se varam). Sve mi se čini da nepotrebno prolaziš kroz listu nekoliko puta više nego što je potrebno. 🙂
 
Poslednja izmena:
Add_vertex je cudna func. Kao da fali ; na kraju for petlje. Ovako napisano deluje da nikada ne dodaje novi clan liste. Sad sam na telefonu pa ne mogu da testiram.
 
Nnapravio sam par izmena. Jedna od gresaka je bila u vertex_t* vp1 = vhead, *head = NULL, *path = NULL, *temp; gde vhead treba da bude &vhead. Sada navodno nema memory leaks. Yooyo upravu si za ;

kad pokrenem program sa ./graph dobijam kako treba da izgleda output ali kada unesem parametre npr ./graph Kragujevac Beograd 153 Beograd Mladenovac 51 trebao bi da dobijem listu koja kaze:

kragujevac: beograd 153
beograd: kragujevac 153 mladenovac 51 // posto ima direktnu vezu sa oba suseda
mladenovac: beograd 51

i ostatak programa..

za sada dobijam nesto slicno ali recimo u drugoj liniji dobijam samo kragujevac 153 ne i mladenovic... ima ovde jos dosta da se radi..
 
Poslednja izmena:
Nazad
Vrh Dno