|
|
|
|
Bonjour,
Voila je suis débutant en langage C et j'aimerais libérer une case mémoire a l'aide de la fonction FREE.
J'ai donc une structure qui comporte le nom et l'age d'une personne, voici le programme:
#include "stdio.h"
#include "malloc.h"
struct personne
{
int age;
char nom[10];
};
personne *eleves;
int i;
void main()
{
eleves = (struct personne *) malloc (10 * sizeof(struct personne));
for (i=0;i<4;i++)
{
printf("nom de l'edutiant:");
scanf("%s",&eleves[i].nom);
printf("age de l'edutiant:");
scanf("%d",&eleves[i].age);
}
// free(eleves[3]); comment faire ??
}
le problème est : par exemple si je veux supprimer l'élève N°3, comment faire pour libérer la case memoire dans laquelle il était ?
Merci :)
Configuration: Windows Vista Firefox 3.0.5
Bonjour
|
Pas tout à fait d'accord (si j'ai bien compris ce que tu cherches à faire)
eleves[i] = (struct personne *) malloc (sizeof(struct personne)); D'autre part, élèves est n tableau de pointeurs sur des personnes. Donc eleves[i] est un pointeur sur une structure personne. Donc eleves[i][i] ne veut rien dire : pour que ça veuille dire quelque chose, il faudrait que eleves[i] soit un tableau. Le nom d'un élève est dans eleves[i]->nom et son age dans eleves[i]->age. D'où les scanf : scanf("%s",eleves[i]->nom);
scanf("%d",&(eleves[i]->age)); |