Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de mémoire???

    17 août 2006 à 20:25:17

    Bonjour chers zéros :) je suis en train de lire le chapitre sur l'allocation dynamique et plus particulièrement le passage sur le nombre d'amis et leurs ages.
    J'ai refais le code en vérifiant à la fin si tout était bon et je lance le programme. Jusque là tout va bien. Mais pendant son execution je rentre par ex: 8 amis, et au moment de rentrer le quatrième age le programme s'arrete et dit qu'il a un problème et qu'il doit fermer o_O .
    Vous savez à quoi cela est du? :euh:
    Voilà mon code qui normalement doit etre identique à celui de Mateo :

    #include <stdio.h>
    #include <stdlib.h>

    int main ( int argc, char** argv )
    {
        long nombreDAmis = 0, i = 0;
        long* ageAmis = NULL;
       
        printf("Combien d'amis avez-vous ? ");
        scanf("%ld", &nombreDAmis);
       
        if (nombreDAmis > 0)
        {
              ageAmis = malloc(nombreDAmis * sizeof(long));
             
              if (ageAmis == NULL)
              {
                   exit(0);
              }
             
              for (i = 0; i < nombreDAmis; i++)
              {
                   printf("Quel age a l'ami numero %ld ? ", i + 1);
                   scanf("%ld", ageAmis[i]);
              }
             
              printf("\\n\\nVos amis ont les ages suivants :\\n");
              for (i = 0; i < nombreDAmis; i++)
              {
                   printf("%ld ans\\n", ageAmis[i]);
              }
              free(ageAmis);
        }                         
       
        system("PAUSE");
        return 0;
    }

    C'est peut être une erreur bête vous savez j'ai une petite migraine (on s'en fout :colere2: ) :p
    Bon en tout cas merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      17 août 2006 à 20:27:14

      T'as oublié un '&' devant ageAmis [i] pour le scanf.
      • Partager sur Facebook
      • Partager sur Twitter
        17 août 2006 à 20:31:11

        oups je vous avez dit que j'étais un peu fatigué :lol:
        Merci asmanur ;)

        EDIT : Par contre je suis un peu embrouillé il ne faut pas mettre de & normalement quand c'est un pointeur et ageAmis est un pointeur donc je ne comprends pas très bien :(
        • Partager sur Facebook
        • Partager sur Twitter
          18 août 2006 à 13:02:09

          ageAmis est un pointeur, soite, mais ageAmis[i] n'en est pas un : c'est une "case" du tableau, et par conséquent une variable. C'est pour ça qu'il faut bien mettre le '&' pour que ça marche.
          • Partager sur Facebook
          • Partager sur Twitter

          Probleme de mémoire???

          × 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