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
-
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.Ui, scheiße, jetzt kommts mir. So was blödes, ein bisschen mehr nachdenken wär wahrscheinlich auch nicht schlecht. Thx camper