Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30

    [C++] Qt, segmentation fault incomprensibile

    Cosa c'è di sbagliato nel codice che segue tale da provocare un segmentation fault?
    codice:
    void mywindow::languageSlot(boolChecked){
        QString x=text1.toPlainText();
        std::string tt=x.toUtf8().constData();
        ToTransliterate *r;
        if(Checked){
            this->language=sender()->property("language").toInt();
            switch(this->language){
                case 0: //Belarusian
                          r=new Belarusian();
                          break;
                case 1: //Bulgarian
                          r=new Bulgarian();
                          break;
                case 2: //Macedonian
                          r=new Macedonian();
                          break;
                case 3: //Russian
                          r=new Russian();
                          break;
                case 4: //Serbian
                          r=new Serbian();
                          break;
                case 5: //Ukrainian
                          r=new Ukrainian();
                          break;
            }
           text2.setPlainText(QString::fromStdString(r->Transliterate(tt)));
           delete r;
        }
    }
    Ho notato che togliendo tutti new il programma non da problemi.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Sicuro che il valore di this->language sia compreso tra 0 e 5 ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30
    Sicurissimo, ho fatto una decina di prove

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Anche se sono certo che hai fatto le prove, prova a scrivere

    codice:
    ToTransliterate*r = NULL;
    
    e

    codice:
    if (r)
    {
    text2.setPlainText(QString::fromStdString(r->Transliterate(tt)));
       delete r;
    }
    
    

    e controlla se si verifica ugualmente l'errore.
    Ultima modifica di oregon; 20-10-2013 a 22:28
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30
    Si lo fa lo stesso. Se può essere utile: il segfault si verifica nel momento esatto in cui clicco su uno dei QRadioButton a cui è associato lo SLOT scritto sopra.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma riesci ad eseguire il codice con il debugger linea per linea ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30
    Certo, è grazie al debugger che ho scoperto che c'era un segfault, dice signal SIGSEGV.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    No, con il debugger dovresti anche individuare la linea in cui avviene. L'errore lo vedresti comunque ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    30
    Sono riuscito a risolvere... mi ero dimenticato di includere la libreria string... che idiota che sono...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Senza l'include il compilatore non avrebbe neanche dovuto compilare. Ma l'errore l'avevi a runtime o in compilazione??
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.