[gelöst] Segmentation error durch WA_DeleteOnClose
Verfasst: 12. Februar 2010 13:48
hi,
ich habe seit einiger Zeit auf meinem openSuse10.2 jedesmal, wenn ich mein Qt-Programm beende, einen Segmentation error. Ich hatte bereits in diesem Forum um Rat gefragt und alles mögliche ausprobiert, aber der Fehler blieb. Im Debug-Mode wird ein Fehler bei free... gemeldet. Eine Forum-Antwort damals war, dass möglicherweise irgendwo ein Speicher freigegeben werden soll, der bereits freigegeben ist. Die Debugger-Meldung deutet auch darauf hin, aber ich konnte nichts finden. Ein Versuch, mit dem Debugger durchzusteppen, führte mich tief in die Qt-Bibliotheken hinein, wo ich aufgab, weil ich mich da nicht auskenne.
Jetzt habe ich etwas gefunden, um den Fehler zu vermeiden, verstehe aber nicht, warum das so ist.
Ich habe ein QMainWindow, in dessen Constructor gleich nach dem setupUi(this) ein WA_DeleteOnClose kommt:
Wenn ich im Constructor nichts weiter mache, als die hier gezeigten Zeilen, und ich beende das Programm, dann tritt der Fehler Segmentation error auf. Da ich die GUI mit dem Qt-Designer erstellt habe, und alles dafür Notwendige automatisch erzeugt wird, kann somit der Fehler nicht in meinem eigenen Code liegen.
Wenn ich allerdings die Zeile setAttribute(....) auskommentiere, dann tritt die Fehlermeldung nicht auf.
Kann mir jemand erklären, warum diese Zeile hier einen Fehler erzeugt und wann ein WA_DeleteOnClose überhaupt erlaubt ist?
ich habe seit einiger Zeit auf meinem openSuse10.2 jedesmal, wenn ich mein Qt-Programm beende, einen Segmentation error. Ich hatte bereits in diesem Forum um Rat gefragt und alles mögliche ausprobiert, aber der Fehler blieb. Im Debug-Mode wird ein Fehler bei free... gemeldet. Eine Forum-Antwort damals war, dass möglicherweise irgendwo ein Speicher freigegeben werden soll, der bereits freigegeben ist. Die Debugger-Meldung deutet auch darauf hin, aber ich konnte nichts finden. Ein Versuch, mit dem Debugger durchzusteppen, führte mich tief in die Qt-Bibliotheken hinein, wo ich aufgab, weil ich mich da nicht auskenne.
Jetzt habe ich etwas gefunden, um den Fehler zu vermeiden, verstehe aber nicht, warum das so ist.
Ich habe ein QMainWindow, in dessen Constructor gleich nach dem setupUi(this) ein WA_DeleteOnClose kommt:
Code: Alles auswählen
SimDesign::SimDesign(QMainWindow *parent) : QMainWindow(parent)
{
setupUi(this);
setAttribute(Qt::WA_DeleteOnClose, true);
...
Wenn ich allerdings die Zeile setAttribute(....) auskommentiere, dann tritt die Fehlermeldung nicht auf.
Kann mir jemand erklären, warum diese Zeile hier einen Fehler erzeugt und wann ein WA_DeleteOnClose überhaupt erlaubt ist?