2016-11-18 101 views
0

我正在爲一個類的這個小項目工作,我遇到了這個問題。 我在這個例子中運行了ddd,當它退出while循環時prev被設置爲null,導致了Segmentation Fault。指針沒有被分配

當我運行DDD時,我注意到temp不是空,並且兩個「prev is nulln」打印語句不會被觸發,而是循環外的那個。

你知道會發生什麼嗎?

 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

只發布一部分功能在診斷問題時無用。請發佈[mcve]。 –

回答

3

如果循環的第一次迭代在此舉行:

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

,那麼你永遠不會初始化prev