krasi Opublikowano 19 Listopada 2006 Zgłoś Opublikowano 19 Listopada 2006 Fragment klasy: class node {public: char *c; node *next; //node(); node(char *s, node *p =0) { /* int i; for (i=0;i<strlen(s);i++) { *(c+i) = s[i]; } *(c+i) = '\0'; <- to daje segmentation fault */ //std::cout <<"Dostalem: " << s << "\n"; [b]c = s;[/b] next = p; } ~node();}; W kodzie: char buff[255];//petelka ustalajaca zawartosc tablicy:tail->next = new node(buff); Efekt: jak testuje to wewnatrz metody gdzie przypisuje wartosc buff'owi to we wszystkich wezlach jest ostatnia wartosc. Gdy testuje "poza" to dostaje krzaki co swiadczy, ze w pierszym listingu pod c podpinany jest adres z s, jak zrobic zeby wartosc byla skopiowana, a nie jej adres. Dzieki za pomoc z gory. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 21 Listopada 2006 Zgłoś Opublikowano 21 Listopada 2006 (edytowane) dobra, a gdzie w klasce przydzielasz pamięc na c, w końcu c to jest wskaźnik na char i on przechowuje jedynie adres, w twoim przypadku na losowe miejsce w pamięci, które następnie zapisujesz wartościami z tablicy buff[], stąd masz segmentejszyn fault...? druga sprawa, bardziej semantyczna... Po co stosować klasy skoro elementy typu c sa publiczne i można w każdej chwili przypisać do nich cokolwiek bez żadnej kontroli :) Edytowane 21 Listopada 2006 przez PelzaK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...