probleme a la liberation de la memoire
Bonjour
Le code suivant compile (gcc -Wall -Werror -o point.exe point.c)
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
|
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int x;
int y;
}Point;
void test(int nb) {
Point* p = malloc(nb * sizeof(Point));
int i;
for(i = 0 ; i < (2 * nb) ; i++) {
p[i].x = i;
p[i].y = i + 1;
}
for(i = 1 ; i <= nb ; i++) {
printf("du point numero %d, l'abscisse vaut %d et l'ordonnee vaut %d \n", i, p[i].x, p[i].y);
}
printf("fin affichage debut liberation memoire\n");
free(p);
printf("sortie de la fonction test\n");
}
int main (int argc, char* argv []) {
int param = atoi(argv[1]);
test(param);
printf("retour dans le main \n");
return 0;
} |
l'execution par: point.exe 6 donne
du point numero 1, l'abscisse vaut 1 et l'ordonnee vaut 2
du point numero 2, l'abscisse vaut 2 et l'ordonnee vaut 3
du point numero 3, l'abscisse vaut 3 et l'ordonnee vaut 4
du point numero 4, l'abscisse vaut 4 et l'ordonnee vaut 5
du point numero 5, l'abscisse vaut 5 et l'ordonnee vaut 6
du point numero 6, l'abscisse vaut 6 et l'ordonnee vaut 7
fin affichage debut liberation memoire
puis cesse de fonctionner si qlq'un peut m'expliquer mon erreur ou la cause
d'avance merci