Speicherfehler! Segmentation fault; Exited with status 139
Verfasst: 25. November 2008 19:02
Hallo,
ich bin noch nicht lange ein "QTler". In letzter Zeit habe ich mich aber mal dran gegeben etwas mehr zu tun.
Nun habe ich aber ein höchst merkwürdiges Problem.
Kompiliere ich meinen Code, so kann der Code bis zum Ende erfolgreich kompiliert werden.
Schreibe ich dann aber etwas in mein TextEdit, so schießt sich das Programm und ich bekomme einen Speicherfehler im KDevelop.
Segmentation fault
*** Exited with status 139 ***
Per Connect habe ich das TextEdit mit einem textChanged verpunden, dass eine Methode namens "updateStatuszeile (void)" aufruft.
In dieser wiederum wird eine Methode namens "countWords()" aufgerufen.
Kommentiere ich die "countWords()" komplett aus, läuft das Programm.
Nehme ich den Kommentar weg und setze einen einfachen Zeilenumbruch (also einfach ein "Enter" der Tastatur) in den Code, funktioniert das Compiling wieder und der Code ist lauffähig. Wehe aber ich ändere die "mainform.ui" im QT4 Designer. Wenn ich auch nur eine neue "action" einfüge, bekomme ich den gleichen Fehler (s.o.), nachdem ich eine Tastatureingabe im textEdit gemacht habe. Setze ich wieder einen Zeilenumbruch in den Code, klappt es wieder, bis ich etwas im Designer ändere.
Jemand eine Idee?
MFG
Fvzzl3
Code:
0. Durch diesen Connect geht der Fehler aus:
1. updateStatuszeile(void) //Wird per Connect bei Textänderung vom textEdit aufgerufen
2. countWords(void)
ich bin noch nicht lange ein "QTler". In letzter Zeit habe ich mich aber mal dran gegeben etwas mehr zu tun.
Nun habe ich aber ein höchst merkwürdiges Problem.
Kompiliere ich meinen Code, so kann der Code bis zum Ende erfolgreich kompiliert werden.
Schreibe ich dann aber etwas in mein TextEdit, so schießt sich das Programm und ich bekomme einen Speicherfehler im KDevelop.
Segmentation fault
*** Exited with status 139 ***
Per Connect habe ich das TextEdit mit einem textChanged verpunden, dass eine Methode namens "updateStatuszeile (void)" aufruft.
In dieser wiederum wird eine Methode namens "countWords()" aufgerufen.
Kommentiere ich die "countWords()" komplett aus, läuft das Programm.
Nehme ich den Kommentar weg und setze einen einfachen Zeilenumbruch (also einfach ein "Enter" der Tastatur) in den Code, funktioniert das Compiling wieder und der Code ist lauffähig. Wehe aber ich ändere die "mainform.ui" im QT4 Designer. Wenn ich auch nur eine neue "action" einfüge, bekomme ich den gleichen Fehler (s.o.), nachdem ich eine Tastatureingabe im textEdit gemacht habe. Setze ich wieder einen Zeilenumbruch in den Code, klappt es wieder, bis ich etwas im Designer ändere.
Jemand eine Idee?
MFG
Fvzzl3
Code:
0. Durch diesen Connect geht der Fehler aus:
Code: Alles auswählen
connect( textEdit, SIGNAL( textChanged() ), this, SLOT( updateStatuszeile() ) );
Code: Alles auswählen
void MainForm::updateStatuszeile (void)
{
int words = countWords();
status.setText(trUtf8("Wörter: ")+QString::number(words));
statusBar()->insertPermanentWidget(0, &status);
}
Code: Alles auswählen
int MainForm::countWords()
{
QString text = textEdit->toPlainText();
text.replace('\n', " ");
text = text.simplified(); //Unnötige Leerzeichen entfernen
int wordtest = text.count( " " ); //Leerzeichen zählen
wordtest++; //Da am Ende das Wort kein Leerzeichen mehr besitzt.
return wordtest;
}