Partage
  • Partager sur Facebook
  • Partager sur Twitter

SIGSEGV, Segmentation fault

    18 février 2018 à 15:48:27

    bonjour 

    je rencontre un problème lors de la compilation d'un programme(pour préciser, j'ai crée une classe qui personnalisé qui affiche une fenêtre, et quand j'ai fait de le débogage il m'ai apparue le message suivnat : " SIGSEGV, Segmentation fault "

    j'ai cherché sur le net d’abord, et j'ai vus que ça pourrais étre a cause d'une mauvaise allocation de mémoire, mais j'ai vérifié et revérifié mon programme et je n'arrive toujours pas a voir d'ou vient le problème, 

    voila le header de la classe maFenetre : 

    #ifndef MAFENETRE_H
    #define MAFENETRE_H
    
    #include <QApplication>
    #include <QPushButton>
    #include <QWidget>
    #include <QLCDNumber>
    #include <QSlider>
    
    class MaFenetre : public QWidget      //heritage
    {
    
    public:
        MaFenetre(int a, int b);
    
    private:
        QLCDNumber *m_lcd;
        QSlider *m_slider;
    
    };
    
    #endif // MAFENETRE_H
    

    le constructeur : 

    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QSlider>
    #include <QLCDNumber>
    #include "maFenetre.h"
    
    MaFenetre::MaFenetre(int a, int b) : QWidget()
    {
         setFixedSize(a, b);
    
         m_lcd = new QLCDNumber(this);
         m_lcd->setSegmentStyle(QLCDNumber::Flat);
         m_lcd->move(50, 20);
    
         m_slider = new QSlider(Qt::Horizontal, this);
         m_slider->setGeometry(10, 60, 150, 20);
    
    
    }
    

    et 

    le main.cpp 

    #include <QApplication>
    #include <QPushButton>
    #include <QWidget>
    #include <QSlider>
    #include <QLCDNumber>
    #include "maFenetre.h"
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        MaFenetre fenetre(300, 300);
        fenetre.show();
    
        return app.exec();
    }
    
    

    et voila se que me donne le débogage : 

    merci pour votre aide 

    • Partager sur Facebook
    • Partager sur Twitter
    Vous ne pouvez pas comprendre la récursivité sans avoir d’abord compris la récursivité
      22 février 2018 à 23:27:55

      Bonjour,

      J'ai copié collé ton code source et ... je n'ai pu reproduire l'erreur que tu obtiens.

      Je précise tout de même que les erreurs de segmentation sont causées par un accès à une zone de la mémoire qui ne t'appartiens pas. Cela peut être, par exemple, le déférencement d'un pointeur NULL, l'utilisation d'un pointeur non initialisé, utilisation d'un pointeur après un delete, ou accès à une case hors du tableau (d'indice supérieur ou égale à sa taille). Je te rassure, dans ton code, aucune des erreurs citées n'est présente.

      L'erreur vient peut-être du manque de la macro Q_OBJECT au début de ta classe:

      "Notice that the Q_OBJECT macro is mandatory for any object that implements signals, slots or properties. You also need to run the Meta Object Compiler on the source file. We strongly recommend the use of this macro in all subclasses of QObject regardless of whether or not they actually use signals, slots and properties, since failure to do so may lead certain functions to exhibit strange behavior."

      -Documentation officielle de la classe QObject (http://doc.qt.io/qt-5/qobject.html)

      Cordialement,

      Sacrefeu

      • Partager sur Facebook
      • Partager sur Twitter

      SIGSEGV, Segmentation fault

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown