Speicher freigeben



  • Hallo!

    Ich habe mir eine eigene template Liste gemacht, die folgendermaßen ausschaut:

    //Meine Liste mit verschachtelten Iterator
    template <class T> class Liste{
    
             Node<T>* m_root;	//Zeiger auf erstes Element in der Liste
    	int m_size;		
    
          public:
    	Liste(){
    		m_root=NULL; 
    		m_size=0;
    	}
    	~Liste(){
    		delete m_root;
    	}
    
             class Iterator{
    
    		Node<T>* iternode;
    
    	public:
    		Iterator(Node<T>* p) : iternode(p) {}
    		~Iterator() {
    			delete iternode;
    		}
             }
    }
    --------------------
    //Node Klasse
    template <class T> class Liste;
    
    template <class T> class Node{
    
    	T m_node;		//m_node ist ein Element der Liste
    	Node* m_next;	//m_next ist ein Zeiger auf das nächste Element 
    	friend class Liste<T>; 
    public:
    	Node(T node, Node* next = 0) : m_node(node), m_next(next){}
    	~Node(){
    		delete m_next;
    	}
    
    };
    

    Sie funktioniert einwandfrei. Doch dann wollte ich mich an die Speicherverwaltung ranmachen und den Speicherplatz der Zeiger auf die Objekte wieder freigeben. Bei der Klasse Node geht das delete im Destruktor.
    Jedoch wenn ich denn Destruktor so mach wie oben für die Klasse Liste und der Klasse Iterator, stürtzt mein Programm am Ende ab.

    Kann mir bitte jemand helfen?

    MfG
    Dosunmu


  • Mod

    dosumu schrieb:

    ~Iterator() {
                delete iternode;
            }
    

    Erklärung?



  • BTW: Ist die Einrückung willkürlich oder gehorcht sie irgendeinem Schema?

    (SCNR)



  • @LordJaxom
    Da sieht schon in meinem Programm anderes aus, hab beim einfügen ein bisschen herumgemurkst.

    @camper

    Ui, scheiße, jetzt kommts mir. So was blödes, ein bisschen mehr nachdenken wär wahrscheinlich auch nicht schlecht. Thx camper


Anmelden zum Antworten