QFtp - Objekt löschen

Alles rund um die Programmierung mit Qt
Antworten
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

QFtp - Objekt löschen

Beitrag von Saiyaman »

Hallo!

Ich möchte ein QFtp-Objekt löschen und nullen:

Code: Alles auswählen

if (itsFtp != NULL)
{
delete itsFtp;
itsFtp = NULL;
}
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).

MfG
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

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.

MfG
Timewarp
Beiträge: 23
Registriert: 4. November 2005 21:09
Wohnort: Deutschland

Beitrag von Timewarp »

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.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Hast dich aber mit dem Code posten auch schwer zurueckgehalten ;)
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Ja, das war halt die wichtigste Stelle. Wenn ich die ganze Klasse poste, wo diese eine Methode drin ist, bringts imo nix.

Wie könnte ich herausbekommen, ob QT das Objekt von selbst löscht? Beim QHttp-Objekt scheint ers nich zu machen, da klappt nämlich alles.

MfG
benchdollar
Beiträge: 1
Registriert: 8. Februar 2006 20:55
Wohnort: Bremen, Germany

Beitrag von benchdollar »

Ich habe ein ähnliches Problem.

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.
Giri
Beiträge: 4
Registriert: 25. Juni 2007 15:01

Beitrag von Giri »

Hallo,

Ich wollte mal nachfragen ob (und vor allem WIE) das Problem gelöst worden ist. Ich hänge nämlich gerade an der selben Sache.

Schöne Grüße,
Giri
Giri
Beiträge: 4
Registriert: 25. Juni 2007 15:01

Beitrag von Giri »

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).

Code: Alles auswählen

if(m_ftp->currentDevice()->isOpen())
{
m_ftp->currentDevice()->close();
}
delete m_ftp->currentDevice();
Schöne Grüße,
Giri
RD1978
Beiträge: 84
Registriert: 5. Juni 2007 08:00
Wohnort: Stralsund (DDR)

Beitrag von RD1978 »

Hi,

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.
MfG RD1978
Antworten