Allerdings kommt ein Speicherfehler weil wohl irgendwas noch auf das FTP-Objekt zugreift.
Könnte es ein offener Request sein? Oder ist das eher unwahrscheinlich?
Ich habe mal im Einzelschritt debugged. Meine Funktionen werden tadellos ausgeführt. Erst wenn der User wieder Eingaben tätigen kann, kommt der Fehler in der free.c (also Speicher freimachen).
Es ist zu der Zeit schon geschlossen. Ich kann den Pointer einfach so nullen. Dann bekomm ich keinen Fehler. Es liegt am löschen des Objektes. Irgendwas greift wohl auf den Speicherbereich zu. Ich komm aber einfach nich dahinter, was das sein soll.
kann es sein das das Objekt von QT selbst schon gelöscht wurde ?
Ich kann mich z.B. erinnern das ein QListWidget Objekt von alleine sein HeaderItem löscht so das man das nicht selbst machen muss.
Unter Windows lade ich per ftp->get("file.jpg") eine datei runter. diese kann ich aber bis zum schliessen der anwendung nicht öffnen, da irgendwie QFtp immer ein Filehandle darauf geöffnet hat, obwohl ich flush() und close() aufgerufen habe.
Für diejenigen die vielleicht auch mal in die Situation kommen - habe (für meinen Fall) eine Lösung gefunden.
Ein delete des "currentDevice" reicht nicht aus um die Ressourcen freizugeben. Auch wenn man den IODevice selber nie aufgemacht hat, muss man ihn per Hand selber zumachen (und nicht einfach löschen wies in der Doku steht).
Soweit ich weiß, sollten Objekte die von QObject erben gundsätzlich mit deleteLater() gelöscht werden, nicht mit delete. Dadurch übernimmt Qt das löschen des Objektes.
void QObject::deleteLater () [slot]
The object will be deleted when control returns to the event loop.