1 pièce(s) jointe(s)
Allocation dynamique, malloc, free
Bonjour,
Le code ci-dessous fonctionne mais il affiche un message d'erreur en fin d’exécution dans la console lorsque le nombre de personnes dépasse 2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include <stdio.h> // ok linux
#include <stdlib.h> //
#include <time.h> //
#include <string.h>
int main()
{
int nbre_personnes, i = 0;
char *prenom_personnes[50];
int *ptr_age_personnes = NULL;
printf("\n Combien de personnes sont ici présentes ? ");
scanf("%d", &nbre_personnes);
if (nbre_personnes > 0)
{
*prenom_personnes = malloc(nbre_personnes * sizeof (int)); // il doit y avoir une erreur ici, le pointeur et int...
ptr_age_personnes = malloc(nbre_personnes * sizeof (int));
if (nbre_personnes == 0)
{
exit(0);
}
for (i = 0; i < nbre_personnes ; i++)
{
printf("\n Quel est le prénom de la personne %d ? ", i + 1);
scanf("%s", prenom_personnes[i]);
}
for (i = 0; i < nbre_personnes ; i++)
{
printf("\n Quel âge a %s ? ", prenom_personnes[i]);
scanf("%d", &ptr_age_personnes[i]);
}
for (i = 0; i < nbre_personnes ; i++)
{
printf("\n %s a %d an%c ", prenom_personnes[i], ptr_age_personnes[i], ptr_age_personnes[i] > 1 ? 's' : ' ');
}
free(ptr_age_personnes); // Un seul malloc est libéré, un messages d'erreur s'affiche dans l'ide si j'essaye de libérer le second.
printf("\n");
}
return 0;
} |
message d'erreur de la console ci-dessous :
Pièce jointe 508000
Merci pour vos lumières, les corrections et le cour que vous me donnerez :-)
Nicolas.