Utilisation realloc tableaux structure

Signaler
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010
-
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010
-
Bonjour,

Dans le cadre d'un projet je doit utiliser la fonction 'realloc', et j'ai malheureusement quelques soucis.
Voila mon problème:

Je travaille avec un tableau de structure de type:

t_datas *datas;

J'utilise le tableaux sans soucis tout fonctionne, mon problème apparait quand j'essaye de reallouer de la memoire pour ajouter un membre dans mon tableau:
Je procède comme ceci:

J'envoie a ma fonction un pointeur sur le tableau de structure:

int realloc_func(t_datas **datas, int new_size)
{
*datas = realloc(*datas, (new_size + 1) * sizeof(**datas));

Un segfault apparait ici des que j essaye de mettre quelques chose dans le nouveau membre de ma struct.
(...)
}

j'ai essayer plein de combinaison, avec des pointeur temporaire, ect, je comprend visiblement pas quelques chose, de cette satané fonction realloc.

Merci pour vos reponse.
Sam.

There is no place like 127.0.0.1 /

3 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Salut,
je n'utilise jamais cette fonction, mais essaie de faire une notation un peu plus propre (à mon sens) :
*datas = (t_datas *)realloc(*datas, (new_size + 1) * sizeof(t_datas)); 


Ton nouvel élément foire, mais est-ce que tu as déjà les autres ?
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010

Okay ca semble marcher. Je pensait avoir tester aussi comme tu ma mis, mystère lol.
Merci bien en tout cas.

There is no place like 127.0.0.1 /
Messages postés
60
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
19 octobre 2010

Hum, j'ai l'impression que la reallocation de mémoire me détruit des donnés d'autres structure dans mon programme.
Est ce possible ?