IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

SIGSEGV au moment d'un return d'une variable globale (sans pointeur)


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 183
    Par défaut SIGSEGV au moment d'un return d'une variable globale (sans pointeur)
    bonjour,
    je voudrais connaitre la distance entre deux objets. j'ai donc fait une classe distance qui reçoit en parametre un point3D(il ignore la position y) et un point2D et il revoie un float point 2D et point 3D sont identiques a une coordonée près.
    point2D.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include "point2D.h"
     
    point2D::point2D(float a_X, float a_Z) : X(a_X), Z(a_Z)
    {
    }
    bool operator==(point2D point1, point2D point2)
    {
        if (point1.X == point2.X && point1.Z == point2.Z)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    void point2D::operator=(point2D point)
    {
        X = point.X;
        Z = point.Z;
    }
    point2D operator+=(point2D point1, point2D point2)
    {
        point2D point3;
        point3.X=(point1.X+=point2.X);
        point3.Z=(point1.Z+=point2.Z);
        return point3;
    }
    et le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef POINT2D_H
    #define POINT2D_H
     
    class point2D
    {
    public:
        void operator=(point2D point);
        point2D(float a_X = 0, float a_Z = 0);
        float X;
        float Z;
    };
     
    #endif // POINT2D_H
    j'ai donc un de mes deux objets qui a une variable globale m_pos
    (dans le .h en private)
    et une de ses fonctions est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    point2D objet::getPos()
    {
         return m_pos;
    }
    j'ai une boucle dans laquelle getPos() est utilisé.
    quand je lance mon programme (avec debogeur) il marche puis au bout d'un certain nombre de tour de boucle il plante et je reçois un signal SIGSEGV segmentation fault.
    je n'utilise aucun pointeur et cette partie du code n'utilise aucun tableau je ne vois pas ce qui pourrait causer ça.
    quelqu'un pourrait m'aider ?
    merci

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 868
    Par défaut
    Avec les float, on evite de faire des comparaisons ==. T'as pas un tableau declare en dur quelque part ?

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 183
    Par défaut
    si (float m_array[16][256][16]) mais il n'est pas utilisé par getPos()

  4. #4
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 868
    Par défaut
    Je pense que tu fais une lecture/ecriture dans de la memoire qui ne t'appartiens pas. Lance ton executable avec valgrind pour confirmer cette hypothese.

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 183
    Par défaut
    oui c'est le principe d'un sigsegv mais où et comment le corriger ?
    je vais aller voir valgrind

  6. #6
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 183
    Par défaut
    je n'ai pas l'impression que valgrind soit disponible pour windows mais peut-etre que je sais pas chercher si sa existe tu peut m'envoyer un lien ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recupérer la valeur d'un return dans une variable
    Par paragoge dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 26/10/2009, 11h15
  2. Réponses: 5
    Dernier message: 25/05/2005, 22h29
  3. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50
  4. [servlet][bean] return d'une variable
    Par LoLoSS dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/05/2004, 16h59
  5. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo