Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème allocation dynamique

    30 octobre 2019 à 19:00:18

    Bonjour,

    Je poste un message car j'ai un problème avec une allocation dynamique. 

    Je déclare un tableau de la manière suivante : 

    char *pt = NULL;
    char **arguments_primaire = calloc(variable,sizeof(pt));



    Je remplis ensuite les cases une par une, en faisant une allocation dynamique pour la deuxième case car je ne connais pas encore la valeur qu'elle va contenir. 

    char *adresse = calloc(floor(log10(getpid()))+2,sizeof(char))) == NULL)




    Ensuite, quelques lignes plus loin je fais 

    sprintf(arguments_secondaire[1],"%d",numero);

    Problème : à chaque exécution du code, j'avais une erreur du type "*** Error in `secondaire': free(): invalid next size (normal): 0x08f2a180 ***". J'ai donc tapé mon erreur sur internet où il était indiqué que c'était un problème d'allocation mémoire. Qu'à cela ne tienne, j'ai isolé chaque allocation mémoire de mon code pour finir par réaliser que la ligne qui posait un problème était non pas une ligne avec une allocation mémoire mais bien la ligne ci-dessus. Il me suffit de l'enlever pour que tout fonctionne correctement, et l'erreur revient dès que revient cette ligne.

    Mon problème c'est que la fonction sprintf fait pourtant bien son travail : la valeur numero est un int toujours remplie qui est copiée dans la seconde case du tableau "arguments_secondaire" et je ne comprends pas ce qui pourrait causer une erreur. Pourtant c'est bien l'utilisation de la fonction qui pose problème, ou en tout cas la ligne. Ma question est donc la suivante : Est-il possible qu'au vu de l'erreur retournée, qui ne me donne pas d'information précise, l'erreur puisse venir d'ailleurs dans le code et engendrer ce comportement que je ne peux expliquer ? 

    Je vous remercie d'avance,



    -
    Edité par Elexir 1 novembre 2019 à 21:14:21

    • Partager sur Facebook
    • Partager sur Twitter
      30 octobre 2019 à 23:44:37

      numero ne dépasse pas la taille de un char + le '\0' ?

      -
      Edité par rouloude 30 octobre 2019 à 23:48:38

      • Partager sur Facebook
      • Partager sur Twitter

      Problème allocation dynamique

      × 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