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 :

Stack overflow bizarre sur un std::vector


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Janvier 2006
    Messages
    99
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 99
    Par d�faut Stack overflow bizarre sur un std::vector
    Bonjour m'sieurs, dames,

    ben voila, j'ai un tableau de pointeurs sur une classe CTransformation :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
      vector< CTransformation*> tableau_;
    Cet objet fait partie des attributs d'une autre classe CComposant. Je suis dans le cadre d'une simulation longue. Je teste regulierement la taille des tableaux de mes CComposant en appelant la propri�t� NbTransf() :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    int CComposant::NbTransf()
    {
    	return (int)tableau_.size();
    }
    H� bien, ou bout d'un certain temps, en debug j'obtiens une exception de stack overflow, et en release l'appli se ferme brutalement sans sommation, ou autre message d'erreur... Le CComposant en question est bien d�fini. Je travaille sous visual et je peux voir la valeur de mon "tableau_" qui est bien vide "tableau|[0]()". Et pourtant ca plante � ce moment l�. Ce n'est pourtant pas une partie multi-thread�e, donc pas d'acc�s concurrent...

    Plantage � l'appel d'un "size" sur un std::vector, je n'ai jamais vu ca !
    Avez vous des id�es svp ? Merci !

  2. #2
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par d�faut
    Salut on n'a pas assez de code , comment est allou� CTransformation *, comment il est supprim� donc on ne peut pas trop r�pondre..

  3. #3
    Membre confirm�
    Inscrit en
    Janvier 2006
    Messages
    99
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 99
    Par d�faut
    Le "tableau_" en question sur lequel l'appli plante n'est jamais rempli.
    Il est vider dans le constructeur du CComposant :
    de base, et plus aucun remplissage apr�s !
    Il y a justement seulement des acc�s pour v�rifier sa taille et appliquer le traitement ad�quate si celle ci est non nulle. Dans le cas de celui qui plante, il est toujours vide et de nombreux acc�s � tableau_.size() se passent bien, jusqu'au moment ou cela plante !

  4. #4
    Membre Expert
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2011
    Messages
    1 255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 1 255
    Par d�faut
    Citation Envoy� par jcloupgarou Voir le message
    Dans le cas de celui qui plante, il est toujours vide et de nombreux acc�s � tableau_.size() se passent bien, jusqu'au moment ou cela plante !
    Tu dois avoir un �crasement m�moire quelque part.
    As-tu moyen de debugger ? :voir si le vecteur ne se fait pas �craser, par ex, par la variable membre d�clar�e juste avant lui.

  5. #5
    Membre confirm�
    Inscrit en
    Janvier 2006
    Messages
    99
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 99
    Par d�faut
    Oui je traite le probleme en mode debug avec visual studio et je peux espionner la valeur des diff�rentes variables et objets instanci�s au moment du plantage.
    Le CComposant est bien d�fini : il comprend beaucoup d'attributs, vector sur des pointeurs, double, int, CString et autres pointeurs sur des classe maison.
    Dans l'ordre de declaration, c'est une serie de doubles et de int qui precede le tableau, et ils ont des valeurs tout � fait juste (dans l'espion du d�buggueur) et c'est aussi le cas pour tous les attibuts du CComposant.

  6. #6
    Expert confirm�

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activit� : Software Developer
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par d�faut
    Es-tu dans un traitement r�cursif ou dans une boucle ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert � rien, mais qu'il est joli (des fois) : ProceduralGenerator (G�n�ration proc�durale d'images, et post-processing).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Retourner une r�f�rence sur un std::vector
    Par Rodrigue dans le forum C++
    R�ponses: 12
    Dernier message: 13/10/2007, 16h30
  2. Cast sur un std::vector
    Par albat0r dans le forum SL & STL
    R�ponses: 3
    Dernier message: 17/06/2007, 23h07
  3. tri sur std::vector<std::pair<int, float> >
    Par b4u dans le forum SL & STL
    R�ponses: 15
    Dernier message: 01/10/2006, 09h19
  4. 3 pr�cisions sur l'utilisation des "std::vector"
    Par Invit� dans le forum SL & STL
    R�ponses: 9
    Dernier message: 10/01/2006, 00h42
  5. std::sort() sur std::vector()
    Par tut dans le forum SL & STL
    R�ponses: 20
    Dernier message: 05/01/2005, 19h15

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