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
la fonction qui me pose problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; };
le test de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
je pense que mon allocation pour un élément du tableau est fausse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Contact **pContact = NULL; allocContacts(pContact, 2); allocContacts(pContact, 5);
petit détail, je suis sur mac os x
Merci pour vos lumières
Partager