Problème 'std::bad_alloc'

Problème 'std::bad_alloc'

by Céline Guex -
Number of replies: 4

Bonjour,

Je travaille depuis un moment sur l'exercice 2 de la semaine 3 du Mooc et j'ai un problème dans une boucle for. Mon code est le suivant :

ostream& Construction::afficher(ostream& sortie) const{
       for (int i (contenu.size()-1) ; i>=0 ;  --i) {
           sortie << "Couche " << i << " :" << endl;
           //etc...//
            }
       return sortie;

}

Lorsque j'exécute un test sur cette méthode le programme m'affiche :

Couche 0 :
( pleine , blanc)        
//Selon le test que j'ai créé, c'est ce qui est attendu et la boucle devrait s'arrêter là
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc


------------------
(program exited with code: 3)

De ce que j'ai pu lire sur internet, cela pourrait être dû à une exception qui n'aurait pas été attrapée (je n'en ai pas pourtant pas lancée !) ou que je n'aurais plus de mémoire disponible...

Comment puis-je remédier à ce problème ?

Merci d'avance!

Céline Guex

In reply to Céline Guex

Re: Problème 'std::bad_alloc'

by Raffaele Ancarola -

La boucle est correcte.

Tu peut me spécifier s.t.p les contenu de //etc...// ?

Altérnativement, si t'es sur un système linux (comme les VM de l'école) est-ce que tu peut éxécuter

le programme par valgrind? Ou mieux, navigue dans le dossier du programme

puis right click et ouvre un terminal dans cet endroit, enfin

valgrind ./mytest

où mytest corréspond au nom de ton programme test.

Il vont sortir des lignes d'érreurs plus déttagliées et je te demande de les poster (seulement si t'arrive à le faire).

In reply to Raffaele Ancarola

Re: Problème 'std::bad_alloc'

by Céline Guex -

Le code complet est le suivant:

ostream& Construction::afficher(ostream& sortie)const{
      for (int i( contenu.size()-1 ) ; i>=0 ; --i){
          sortie << "Couche " << i << " :" << endl;
          for(size_t k(0);k<contenu[i][0].size();++k){
              sortie << contenu[i][0][k] << " ";             
              }
              sortie << endl;
          }
          return sortie;
      }

Je suis sur Windows est le test que j'ai créé est dans le main de mon programme.

In reply to Céline Guex

Re: Problème 'std::bad_alloc'

by Jean-Cédric Chappelier -

piste : affichez contenu.size(), contenu[i].size() et contenu[i][0].size() et regardez ce que ça donne...

In reply to Jean-Cédric Chappelier

Re: Problème 'std::bad_alloc'

by Céline Guex -

Bonjour,

Merci de vos réponses mais je ne parviens toujours pas à résoudre mon problème... Je vais profiter des séances de réponses aux questions pour régler ce problème.