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 :

push_back fait planter le programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 57
    Par défaut push_back fait planter le programme
    Bonjour,

    Je suis entrain de développer un programme c++ et une erreure fait planter le programme, bien que la compilation se déroule bien.

    j'ai un vector de pointeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector<Structure*> m_collec;
    et je veut y ajouter des éléments pour cela je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Structure* w1 = new WeatherDeck(...);
    m_collec.push_back(w1);
    sachant que WeatherDeck hérite de Structure.

    le programme plante a cause du push_back mais je ne comprend pas pourquoi ?

    la console me dit DOS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    This*application*has*requested*the*Runtime*to*terminate*it*in*an*unusual*way.
    Please*contact*the*application's*support*team*for*more*information.
     
    Process*returned*3*(0x3)***execution*time*:*0.171*s
    Press*any*key*to*continue.

  2. #2
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Ça risque d'être compliqué avec aussi peu d'informations, sous quel environnement travailles-tu (IDE, etc) ? Des outils comme des debuggers peuvent t'aider, à la fin de Structure* w1 = new WeatherDeck(...); regarde notamment si son contenu est correct pour voir s'il n'y a pas un problème de mémoire dans ton programme, c'est pas dit que le problème vienne directement de std::vector::push_back(), il y a peut-être du code qui corrompt la stack avant dans l'ordre d'execution. Ce n'est qu'une supposition mais si c'est le cas un debugger sera bien utile. :p

  3. #3
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 57
    Par défaut
    Bonjour,

    j'utilise Code::Blocks sous windows xp pro la pile d'appel me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #0 00000000	0x00503a4c in __cxa_throw() (??:??)
    #1 00000000	0x00504a61 in operator new() (??:??)
    #2 005277CA	__gnu_cxx::new_allocator<Structure*>::allocate(this=0x22eae4, __n=1073741823) (c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/include/c++/ext/new_allocator.h:89)
    #3 0055BE12	std::_Vector_base<Structure*, std::allocator<Structure*> >::_M_allocate(this=0x22eae4, __n=1073741823) (c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/include/c++/bits/stl_vector.h:140)
    #4 0057D7EE	std::vector<Structure*, std::allocator<Structure*> >::_M_insert_aux(this=0x22eae4, __position={_M_current = 0x0}, __x=@0x22e5c8) (c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/include/c++/bits/vector.tcc:322)
    #5 0057DD24	std::vector<Structure*, std::allocator<Structure*> >::push_back(this=0x22eae4, __x=@0x22e5c8) (c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/include/c++/bits/stl_vector.h:741)
    #6 00410DA5	InputXmlManager::StructureParsing(structXml={node = 0xcbfb10}, myStruct=0x22eae0, listMat={_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, materiaux> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, materiaux> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std:: (C:\Sharp\SOURCE_C_avril_2012_HERVE\InputXmlManager.cpp:841)
    #7 00410747	InputXmlManager::recuperation_donnees_strikingship(fileName={static npos = 4294967295, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3e5eac "C:\\Sharp\\SOURCE_C_avril_2012_HERVE\\impacteur_deformable.xml"}}, listMat={_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, materiaux> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair< (C:\Sharp\SOURCE_C_avril_2012_HERVE\InputXmlManager.cpp:804)
    #8 004B75AC	main(argc=3, argv=0x3e2548) (C:\Sharp\SOURCE_C_avril_2012_HERVE\main.cpp:117)
    et le debugger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    done
    Registered new type: wxString
    Registered new type: STL String
    Registered new type: STL Vector
    Setting breakpoints
    Debugger name and version: GNU gdb 6.8
    Child process PID: 3860
    In __cxa_throw () ()
    At c:/program files/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/include/c++/ext/new_allocator.h:89

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Par défaut
    lance ton programme avec Application Verifier. (peut etre qu'il faut visual studio par contre)

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 57
    Par défaut
    je n'ai pas Visual Studio

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 57
    Par défaut
    j'ai maintenant un problème avec le fichier new_allocator.h ligne 89

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));

Discussions similaires

  1. C# Html Agility Pack fait planter le programme
    Par pascal4435 dans le forum C#
    Réponses: 7
    Dernier message: 01/03/2013, 13h55
  2. Réponses: 19
    Dernier message: 24/10/2009, 23h58
  3. Réponses: 3
    Dernier message: 01/03/2009, 18h09
  4. Réponses: 2
    Dernier message: 17/03/2007, 13h43
  5. Réponses: 1
    Dernier message: 08/06/2006, 11h01

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