verkettete Liste vollständig löschen



  • Hallo,

    reicht das aus, eine Verkettete Liste vollständig zu löschen, auch so dass der Speicherplatz wieder komplett für das Betriebssystem freigegben ist?
    Das ganze in C++.

    stuct Test {
    
      int wert1;
      double wert2;
      Test *pnext; 
    
    };
    
    //nur mal angedeutet
    ~~verkette Liste erzeugen.....~~
    
    Test *test1, *del_test;
    
    //Liste löschen
    while(test1 != NULL) {
    
      del_test = test1;
      test1 = test1->pnext;
      delete del_test; 
    
    }
    


  • Gibt es einen Grund, nicht std::list zu verwenden?
    (Das ist ernst gemeint. Mir würden durchaus welche einfallen.)

    Ansonsten kommt das natürlich darauf an, wie du sie erstellt hast. Was du da machst, ist allerdings C und nicht C++.



  • ich erzeuge die liste so:

    Test *head_test, *new_test, *end_test;
    
      head_test = NULL;
      end_test = NULL;
    
      while(irgendwas) {
    
       new_test = new Test;
       new_test->wert1 = 1;
       new_test->wert2 = 1.2;
    
       if(head_test == NULL)
         head_test = new_test;
       else
         end_test->pnext = new_test;
    
       end_test = new_test;      
    
      }
    


  • Hallo

    Zunächst mal : Moderne Betriebsysteme (ab Win2000) geben nach Programmende sowieso allen Speicher frei, da brauchst du dir keine Sorgen machen. "Nur" Programmintern must du dich um die Vermeidung von Speicherlöchern kümmern.
    Dein Code sieht soweit in Ordnung aus, es werden alle Elemente der Liste gelöscht.
    Aber ich würde dir auch empfehlen std::list zu verwenden.

    bis bald
    akari


Anmelden zum Antworten