2016-11-18 96 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