2016-05-22 22 views
0

Ich dachte über eine verknüpfte Liste, aber es gibt Segmentierungsfehler. Aber ich weiß nicht, warum dieser Code hat Speicherleck ...Segmentierungsfehler auf Linked List-Knoten

Ich habe gerade versucht

Codeblock sagte, ptr = next; < - Dieser Teil hat einen Segmentierungsfehler.

if(head == NULL) 
     { 
      head = new Nodes; 
      head->r_data = data1; 
      head->u_data = data2; 
      head->r_node = NULL; 
      head->u_node = NULL; 
     } 
     else 
     { 
      Nodes *ptr; 
      ptr = head; 
      Nodes *next; 
      next = head->r_node; 
      while(ptr != NULL) 
      { 
       if(ptr->r_data == data1) 
       { 
        next = ptr->u_node; 
        while(ptr != NULL) 
        { 
         if(ptr->u_data < data2) 
         { 
          ptr = next; 
          next = ptr->u_node; 
         } 
         else 
         { 
          break; 
         } 
        } 
        break; 
       } 
       else if(ptr->r_data < data1) 
       { 
        ptr = next; 
        next = ptr->r_node; 
       } 
      } 
      ptr->r_data = data1; 
      ptr->u_data = data2; 
      ptr->r_node = NULL; 
      ptr->u_node = NULL; 
     } 
+1

Dies sieht aus wie C. –

+0

Die Sprache ist C++ – withkikoz

Antwort

0

Das Problem könnte sein, dass Sie versuchen, auf einen Speicherort zuzugreifen, der nicht vorhanden ist. In solchen Situationen ist es immer hilfreich, zuerst zu prüfen, ob der gewünschte Speicherort überhaupt zugänglich ist. In Ihrem Fall, wenn helfen würde, etwas wie hinzufügen:

if(ptr->r_data == data1 && ptr->u_node!=NULL) 
    { 
    next = ptr->u_node; 
    ...... 

Doing Dinge auf diese Weise werden Sie davon abhalten, in Segmentierungsprobleme zu fallen.