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

SL & STL C++ Discussion :

[C++/STL Map] Segfault en Release, rien en Debug


Sujet :

SL & STL C++

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 64
    Par défaut [C++/STL Map] Segfault en Release, rien en Debug
    Bonjour,

    j'ai un problème avec un "dictionnaire" qui me cause un segfault lorsque je tente d'accéder à un élément uniquement en Release (netbeans).

    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    unsigned long getId(std::string entry) 
    std::map<std::string, unsigned long>::iterator it;
        it = this->dict->find(entry);
     
        if (it != this->dict->end()) {
            debug("Value is: " + it->second, DDEBUG); <--- SEGFAULT
            return it->second;
        } else {
            debug("Substring ->" + entry + "<- not found in dictionary", DDEBUG);
            return 0;
        }
    Le backtrace GDB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #0  0x00007ffff735f061 in strlen () from /lib/libc.so.6
    #1  0x00007ffff7b7a220 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) () from /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/libstdc++.so.6
    #2  0x0000000000404c1c in ...::getId(std::string) ()
    #3  0x000000000040519e in ...::Method1(std::string const*) ()
    #4  0x0000000000402f8c in main ()
    La seule option supplémentaire qu'il y a en Release est
    -O2
    Options complètes:g++ -m64 -g -c -g -O2 -Wall -MMD -MP -MF
    Serait-ce cette optimisation qui décide de supprimer les éléments de mon map ?
    A noter que si je commente la ligne en question, la valeur retournée est correcte et mon programme se termine correctement....

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Lorsque tu fais (avec it->second qui est un unsigned long) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Value is: " + it->second
    Le résultat n'est sans doute pas ce que tu espères...

    MAT.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Pour convertir une nombre en chaine de caractère, va voir dans la FAQ

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 64
    Par défaut
    Bonjour,

    merci pour vos réponse. En effet il faudrait que le le convertisse, pour que mon code soit correcte. Etant donné que cette ligne n'est appelé qu'en debug,
    j'étais étonné de voir qu'en Release il ressorte justement à cause de l'option -O2 qui doit apparament empêcher le cast/transform du long en string.

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

Discussions similaires

  1. stl map et valeur par défault
    Par azmodai dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2010, 16h10
  2. Erreur STL MAP
    Par layneuks dans le forum C++
    Réponses: 6
    Dernier message: 11/01/2010, 19h07
  3. inserer dans stl::map
    Par ocean24 dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/04/2007, 01h47
  4. STL map const et une erreur dans une condition...
    Par insomniak dans le forum SL & STL
    Réponses: 2
    Dernier message: 15/05/2006, 17h56
  5. STL, map et operateur '+'
    Par insomniak dans le forum SL & STL
    Réponses: 25
    Dernier message: 13/05/2006, 18h47

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