Signals: Segmentation fault nach emit

Alles rund um die Programmierung mit Qt
Antworten
Hxp
Beiträge: 2
Registriert: 15. Februar 2007 18:23

Signals: Segmentation fault nach emit

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nimm kein char* sondern was richtiges - QByteArray oder QString. Dann wird das Objekt automatisch gelöscht wenn es nicht mehr gebraucht wird.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Hxp
Beiträge: 2
Registriert: 15. Februar 2007 18:23

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Aber Signals und Slots? Da muss doch eh alles anders sein, oder?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten