1. buffer in readName è una variabile locale, e tu assegni il suo indirizzo a newPeer->nome in insertPeerToList. Ma essendo buffer locale a readName, cessa d'esistere all'uscita della funzione readName, quindi all'uscita da readName, newPeer->nome di fatto punta ad una zona di memoria non valida.Originariamente inviato da UnderMaken
codice:void readName(int socketID) { char a; char buffer[MAXSIZE]; int i=0; while(read(socketID,&a,1) > 0){ if(a!='!') buffer[i++]=a; else break; } buffer[i]='\0'; fflush(stdout); iP = getPeerIP(socketID); //sendList(socketID); insertPeerToList(iP, buffer); }codice:void insertPeerToList(char *iP, char *name){ ... newPeer->nome=name; ... }
2. Come lo allochi il valore restituito da getPeerIP?
3. iP a cui assegni il valore restituito da getPeerIP è una variabile globale?

Rispondi quotando