Votre question

[C] Help TP Programmation Débutant

Tags :
  • element
  • Programmation
Dernière réponse : dans Programmation
29 Décembre 2011 17:51:31

Bonjour à tous,
J'ai un petit TP d'informatique à faire pendant mes vacances scolaires, seulement voilà, je bloque sur un exercice à propos des pointeurs.
Je devais créer une fonction qui permettait d'afficher l'adresse de chaque éléments d'un tableau suivi de l'élément et ensuite de le libérer.
Les 2 premières parties n'ont pas posé de problème, mais je n'arrive pas à "libérer"...
Voici mon SuperProgramme!

  1. #include <stdio.h>
  2. #define N 38
  3.  
  4. int main()
  5. {
  6. int i;
  7. int Tab[N];
  8.  
  9. for(i = 1; i <= N; i++)
  10. {
  11. Tab[i] = i;
  12. printf("n = %d\n&n = %d\n\n", Tab[i], &Tab[i]);
  13. }
  14. return (0);
  15. }


J'ai mis tout dans le main pour tester plus facilement.
Je voudrais savoir comment je peux après qu'il m'ait affiché les valeurs, libérer l'élément.
Je vous remercie d'avance!

Autres pages sur : help programmation debutant

a b L Programmation
29 Décembre 2011 18:54:10

Tu as fait un tableau statique (taille fixée à la compilation).
Je penses que l'exercice demande de faire un tableau dynamique (taille déterminée dans le programme, par exemple en demandant à l'utilisateur). Du coup avec le malloc que tu ajoutes pour l'allocation sur le tas, tu dois ajouter le free pour libérer la mémoire allouée sur le tas.
29 Décembre 2011 19:22:37

D'accord, le prof nous avait bien dit d'utiliser un free afin de libérer.
Mais nous n'avons pas trop vu en cours comment faire un malloc?
a b L Programmation
30 Décembre 2011 11:52:56

En paramètre du malloc tu donnes la taille en octets, donc il te faut mettre le nombre d'éléments multiplié par la taille d'un élément:
Tab = (int *) malloc( N * sizeof(int) );
Dans un tableau dynamique, tu ne manipule que des pointeurs, donc Tab est simplement un pointeur de type int*
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS