2016-05-22 35 views
0

我想過鏈接列表,但存在段錯誤。 但我不知道,爲什麼這個代碼有內存泄漏...鏈接列表節點上的段錯誤

我只是想

代碼塊說,PTR =下; < - 這部分有分段錯誤。

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

這看起來像C. –

+0

語言是C++ – withkikoz

回答

0

問題可能是您嘗試訪問不存在的內存位置。在這種情況下,首先檢查你想訪問的內存位置是否可訪問總是有幫助的。在你的情況下,如果將有助於添加如下內容:

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

這樣做會使您不會陷入細分問題。