Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme tableau

Sujet résolu
    12 août 2008 à 14:57:14

    Soyez indulgent, je débute en c++.Pourquoi lorsque je fais DELETE[], toutes les valeurs du tableau ne sont pas mises a zero?
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int *tableau=NULL;int nombre=0;
        tableau=new int[nombre];
        cout <<"Combien de nombres voulez-vous entrer :";
        cin>>nombre;
        cout<<"Saisie tes nombres :"<<endl;
        for(int i=0;i<nombre;i++)
        {
            cin>>tableau[i];
        }
        for(int i=0;i<nombre;i++)
        {
            cout <<"vous avez entrer :"<<tableau[i]<<endl;
        }
        delete[] tableau;
        for(int i=0;i<nombre;i++)
        {
            cout<<"valeur apres DELETE:"<<tableau[i]<<endl;
        }
        return 0;
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2008 à 15:05:58

      Mmm... ok,

      <mode indulgent on>

      delete sert à libérer le tableau, l'espace mémoire qui lui était alloué est à nouveau libre et disponible, ton tableau n'existe plus d'un point de vue logique.

      Maintenant delete ne sert pas à remettre à 0 les valeurs d'un tableau.

      Le seul problème dans ton code est que tu utilises tableau après l'avoir libérer.

      <mode indulgent off>
      • Partager sur Facebook
      • Partager sur Twitter
        12 août 2008 à 22:19:49

        effectivement après le delete [] l'espace mémoire du tableau ne t'appartient peut-être pu... si tu peux y accéder pareil c'est que t'es chanceux.

        Sinon l'espace peut n'importe quand être réservé par un autre programme et c'est le plantage.


        pour remettre un tableau de int à 0 simplement :

        for( size_t i = 0; i < TAILLE_TABLEAU; ++i )
        {
            tableau[ i ] = 0;
        }
        


        Il y a differentes techniques avec les fonction standard et les itérateurs mais ça tu peux chercher ou attendre de vouloir les utiliser pour l'apprendre. D'ici là : ne lâche pas !
        • Partager sur Facebook
        • Partager sur Twitter
          12 août 2008 à 23:19:50

          Y'a aussi une version "avec STL" du code de MatteX:
          std::fill(tableau, tableau + TAILLE_TABLEAU, 0);
          

          std::fill() est définit dans le fichier d'en-tête <algorithm>.

          Mais c'est peut-être un trop complexe pour toi. À garder en mémoire, comme ça, peut-être qu'un jour ça te servira...
          • Partager sur Facebook
          • Partager sur Twitter
            13 août 2008 à 21:49:05

            Merci pour vos réponses.
            • Partager sur Facebook
            • Partager sur Twitter

            probleme tableau

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown