Partage
  • Partager sur Facebook
  • Partager sur Twitter

accès a l'index 15 d'un tableau de 12 valeurs???

Sujet résolu
Anonyme
    18 décembre 2007 à 6:49:38

    Bonjour, j'ai fait un petit test tout bidon, et quand je compilait je me suis rendu compte de mon erreur, j'essayais d'accéder à l'index 15 d'un tableau de 12 valeurs.
    J'ai donc pensé que le programme allait planté, et la surprise, l'OS me laisse accéder à la valeur et me renvoi 16384!
    Pourtant cette valuer n'est pas dans mon tableau, et se trouve réellement perdue dans la mémoire.
    D'ou vient donc ce problème, il devrai y avoir une violation d'accès non?
    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2007 à 9:29:44

      Et ben non ! tu ne peux pas garantir le plantage :

      La mémoire marche par segments :
      il y a des segments pour ton programmes, des segments hors de ton programme.
      Quand tu accedes a une adresse dans un segment extérieur -> segment fautlt : plantage.

      Mais le C ou C++ ne peut pas tester, a chaque acces, si tu es dans le tableau ou non : sinon, je ne te dis pas les ralentissements ! (ou est pas dans ce langage d'escargot de Java : ça c'est dit.)

      Du coup, le plantage, ou non, dépend si le tableau est au bord d'un segment ou non : si il est au bord, et que, le calcul de l'élément 15 te sort du segment, alors tu crashes. Si le tableau n'est pas au bord du segment, alors la case calculée 15 est dans le meme segment : ça ne plante pas. Mais ça peut te renvoyer n'importe quoi : une autre variable posée a coté bien souvent.
      A noter que 16384 est un nombre remarquable : ça fait 2^14. enfin peu importe en fait. meme si c'est marrant de savoir pourquoi 16384, de toute façon, ton programme est instable. Et il est possible qu'a un autre lancement, dans un autre contexte, (en ajoutant du code), tu décales ton tableau, et plante :)
      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

      Anonyme
        18 décembre 2007 à 15:59:56

        oui, possible à ocups quasi sur.
        Mais je fesais juste un test pour une autre fonctionalité, quand je me suis rendu compte que j'avait fait quelque chose d'incohérent (appelle à une fonction qui renvoyer l'index dans le tableau.)
        Merci!
        • Partager sur Facebook
        • Partager sur Twitter

        accès a l'index 15 d'un tableau de 12 valeurs???

        × 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