tableau de pointeur dynamique
bonjour,
avec ma petite connaissance actuelle du c, je cherche a alloué un tableau de pointeurs de type struct Contact.
dans mes divers tests je passe donc un paramètre **pContact dans une fonction pour effectué mon allocation mais a la sortie de la fonction le tableau de pointeur de type struct reste null.
Contact est une structure qui possède une autre structure adresse
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
typedef struct Adresse Adresse;
struct Adresse {
int numero;
char rue[128];
char codePostal[8];
char ville[50];
char pays[50];
};
typedef struct Contact Contact;
struct Contact{
char nom[50];
char prenom[50];
int age;
Adresse adresse;
}; |
la fonction qui me pose problème
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
|
void allocContacts(Contact **pContact, int taille){
static int oldTaille = 0;
int tailleTotal = oldTaille + taille;
if(oldTaille == 0){
pContact = malloc(taille * sizeof(pContact));
}else{
pContact = realloc(pContact, (tailleTotal * sizeof(pContact)));
}
if(pContact == NULL){
printf("Erreur allocation !");
exit(EXIT_FAILURE);
}
for(int i=0; i < tailleTotal; i++){
if (pContact[i] == NULL) {
pContact[i] = malloc(sizeof(*(pContact[i])));
}
}
oldTaille += taille;
} |
le test de la fonction
Code:
1 2 3 4 5
|
Contact **pContact = NULL;
allocContacts(pContact, 2);
allocContacts(pContact, 5); |
je pense que mon allocation pour un élément du tableau est fausse.
petit détail, je suis sur mac os x
Merci pour vos lumières