2016-11-18 4 views
0

Ich arbeitete an diesem kleinen Projekt für eine Klasse, und ich stoße auf dieses Problem. Ich habe in diesem Beispiel ddd ausgeführt, und prev wird auf null gesetzt, wenn es die while-Schleife beendet, was einen Segmentierungsfehler verursacht.Zeiger wird nicht zugewiesen

Als ich ddd ausgeführt habe, ist mir aufgefallen, dass temp nicht null ist und die beiden "prev is nulln" print-Anweisungen nicht ausgelöst werden, sondern der eine außerhalb der Schleife.

Wissen Sie, was passieren könnte?

 while(temp) 
     { 
      printf("while loop.\n"); 
      if(pe->y > temp->y) 
      { 
       printf("while - if reached.\n"); 
       break; 
      }//end if statement 

      prev = temp; 
      if(prev == NULL) 
       printf("prev is null1\n"); 
      temp = temp->next; 
      if(prev == NULL) 
       printf("prev is null2\n"); 
     }//end while loop 
     if(prev == NULL) 
      printf("prev is null3\n"); 
     prev->next = pe;//redit links so that node is added in. 
     pe->next = temp; 
+0

Das Posten nur eines Teils einer Funktion ist nicht hilfreich bei der Diagnose des Problems. Bitte poste ein [mcve]. –

Antwort

3

wenn dies während der ersten Iteration der Schleife hält:

if(pe->y > temp->y) 

dann initialisieren Sie nie prev.

Verwandte Themen