Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petite question sur les pointeurs

Sujet résolu
Anonyme
    16 avril 2008 à 18:21:23

    Est ce que c'est grave ou pas de ne pas faire :

    char * P;
    P = new char[256];
    delete[] P;
    P = new char[256];
    delete[] P;
    


    mais de faire :

    char * P;
    P = new char[256];
    P = new char[256];
    delete[] P;
    


    Ou est ce que ca revient au meme?
    • Partager sur Facebook
    • Partager sur Twitter
      16 avril 2008 à 18:25:20

      AMHA en faisait le deuxième code que tu proposes, tu créera 2 "cases" en mémoire dont une non libéré est inutilisable par la suite ( enfin jusqu'a que le processus soit tué ).
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        16 avril 2008 à 18:26:50

        D'accord merci, ca m'evitera de faire des betises.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          16 avril 2008 à 18:45:24

          A chaque new (repectivement new[]), il doit y vaoir un delete associé (respectivement delete[]).

          Dans le 1er code, pas de problème, c'est respecté.
          Dans le 2eme, non => problème: c'est une fuite de mémoire (memory leak)
          • Partager sur Facebook
          • Partager sur Twitter
            16 avril 2008 à 18:56:42

            (Et la bibliothèque standard du C++ permet d'éviter facilement ce genre de fuites)
            • Partager sur Facebook
            • Partager sur Twitter
            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
              16 avril 2008 à 18:57:51

              Citation : lmghs

              (Et la bibliothèque standard du C++ permet d'éviter facilement ce genre de fuites)



              Mais encore ? que veux-tu dire ? qu'a la place de faire un simple tableau il faut préférer un std::vector ?
              • Partager sur Facebook
              • Partager sur Twitter
                16 avril 2008 à 19:08:21

                Simple ? jusqu'à ce que la première exception, ou le premier oublie débarque ...

                Sinon, il y a std::string aussi. C'est selon.
                • Partager sur Facebook
                • Partager sur Twitter
                C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                Anonyme
                  16 avril 2008 à 19:55:01

                  Perso, plus je travaille bas niveau et plus je suis heureux et ca oblige de prendre des bonnes habitudes et ca permet de mieux comprendre comment sa marche.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 avril 2008 à 20:21:49

                    Des bonnes habitudes ?
                    J'en déduis que tu n'as pas encore croisé le chemin des exceptions et autres situations non nominales. Car les bonnes habitudes en C++ sont assez loin du bas niveau (ou plus exactement du non-RAII), justement à cause des exceptions.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
                    Anonyme
                      16 avril 2008 à 20:26:14

                      Je soutient lmghs.
                      Faire du new en dur (cad sans RAII) dans un contexte où gérer les exeptions est un impératif ca devient vite une horreur et tu es alors content de trouver std::vector ou std::auto_ptr sur ton chemin.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Petite question sur les pointeurs

                      × 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