double free or coruption
Verfasst: 11. Februar 2011 12:35
Hallo,
ich stehe vor einem Problem, für das ich die beste Lösung suche.
Beim Beenden meines Programms wirft mir die Console den Hinweis aus:
*** glibc detected *** /home/repos/workspace/Application/Application: double free or corruption (!prev): 0x08400098 ***
Ich vermute zumindest wo das Problem liegt. Vielleicht kann mir das hier jemand bestätigen.
Ich arbeite mit einem QTreeWidget. Dort im Konstruktor füge ich viele QTreeWidgetItem ein, z.B. mit:
root = new QTreeWidgetItem(this);
Jedes Item stellt eine logische Verbindung mit einer anderen Struktur dar.
Diese Verknüpfungen werden in einer Map abgebildet. Diese Map wird im QTreeWiget verwaltet und sieht ungefähr so aus:
std::map< QTreeWidgetItem *, StrukturItem * > TreeMap;
beim Beenden des Programms bekomme ich nun den Fehler und ich vermute, dass der Desktruktor des QTreeWidgets, versucht alle QTreeWidgetItems zu löschen. Und bei der Auflösung der Map passiert das gleiche nochmal.
Bin ich da auf dem richtigen Weg? Wenn ja, ist QPointer dann eine mögliche Lösung? Oder spielt da das TreeWidget nicht mit?
Wäre für jeden Tipp dankbar.
Viele Grüße
jerry42
ich stehe vor einem Problem, für das ich die beste Lösung suche.
Beim Beenden meines Programms wirft mir die Console den Hinweis aus:
*** glibc detected *** /home/repos/workspace/Application/Application: double free or corruption (!prev): 0x08400098 ***
Ich vermute zumindest wo das Problem liegt. Vielleicht kann mir das hier jemand bestätigen.
Ich arbeite mit einem QTreeWidget. Dort im Konstruktor füge ich viele QTreeWidgetItem ein, z.B. mit:
root = new QTreeWidgetItem(this);
Jedes Item stellt eine logische Verbindung mit einer anderen Struktur dar.
Diese Verknüpfungen werden in einer Map abgebildet. Diese Map wird im QTreeWiget verwaltet und sieht ungefähr so aus:
std::map< QTreeWidgetItem *, StrukturItem * > TreeMap;
beim Beenden des Programms bekomme ich nun den Fehler und ich vermute, dass der Desktruktor des QTreeWidgets, versucht alle QTreeWidgetItems zu löschen. Und bei der Auflösung der Map passiert das gleiche nochmal.
Bin ich da auf dem richtigen Weg? Wenn ja, ist QPointer dann eine mögliche Lösung? Oder spielt da das TreeWidget nicht mit?
Wäre für jeden Tipp dankbar.
Viele Grüße
jerry42