Seite 1 von 1

Signals: Segmentation fault nach emit

Verfasst: 15. Februar 2007 18:37
von Hxp
Hallo,

bin absolut neu hier und habe die Suche verwendet (leider ohne Erfolg).
Ich habe folgendes Problem:
Zwei Threads:
* einer empfängt Chat-Nachrichten (= erzeugt die Signale)
* der andere ist für die Darstellung zuständig (= wartet auf die Signale und zeigt die Nachrichten an).

Wenn ich nun mit emit ein Signal erzeuge, als Parameter einen char* auf die eingetroffene Chat-Nachricht mitgebe, und diesen Pointer mit free wieder freimache, dann bekomme ich meist einen Segmentation Fault im Anzeige-Thread. OK, Grund dafür dürfte laut QT-Faq sein, dass bei mehreren Threads die Slots gequeued werden und das emit schon früher zurückkehrt.

Was kann ich nun machen, dass kein Speicherloch zurückbleibt? Ich muss diesen char* doch irgendwann mal freimachen...
Oder muss ich in diesem Fall QStrings verwenden, da diese durch den Garbage Collector irgendwann dann weggeräumt werden?

Verfasst: 15. Februar 2007 18:47
von Christian81
Nimm kein char* sondern was richtiges - QByteArray oder QString. Dann wird das Objekt automatisch gelöscht wenn es nicht mehr gebraucht wird.

Verfasst: 15. Februar 2007 23:03
von Hxp
danke vielmals für die Antwort.
Hab mir schon sowas gedacht, nur wollte ich es möglichst lange plattformunabhängig halten, da ich das Programm mal auf PDA portieren will und dort gibts ja leider kein QT.

grüße

Verfasst: 16. Februar 2007 09:00
von Christian81
Aber Signals und Slots? Da muss doch eh alles anders sein, oder?