liste welche Adressen auf Objekte enthält säubern und die Objekte deleten



  • Hallo!

    ich habe eine stl-list, wo in einer Funktion immer die Adressen von per new erstellte Objekte eingefügt werden (push_back).
    Mit einer anderen Funktion möchte ich diese Objekte löschen, allerdings stürzt mein Programm immer ab, hier der Code:

    for(list<Object*>::iterator itP = ObjectListe.begin(); it!=ObjectListe.end(); ++it)
    	{
    		delete (*it);  // Absturz
    		ObjectListe.pop_front();
    	}
    

    Ich finde den Fehler nicht



  • Lass mal das

    ObjectListe.pop_front();
    

    weg und mach nach der Schleife ein

    ObjectListe.clear();
    

    Ich glaube bei pop_front werden die aktuellen Iteratoren ungültig, wodurch du undefiniertes Verhalten erzeugst, wenn du deinen Iterator weiter erhöhst!



  • Ja, dass war der Fehler, danke! 👍


Anmelden zum Antworten