Initialisation dans une fonction d'une matrice de pointeur - C - Programmation
Marsh Posté le 30-05-2010 à 18:22:37
2 problèmes
1) tu passes à ta fonction add_line la variable h_InputKey. Or cette fonction semble devoir modifier cette variable. T'as pas appris que quand une fonction doit modifier une variable il lui faut alors recevoir l'adresse de cette variable ?
2) tu utilises realloc sur h_inputKey. Or realloc ne fonctionne que s'il reçoit un pointeur correct, c.a.d soit à NULL (dans ce cas realloc fonctionne comme un malloc), soit déjà alloué via malloc ou realloc
Or h_inputKey n'ayant pas été initialisé, sa valeur est indéterminée.
Marsh Posté le 30-05-2010 à 20:44:06
Sve@r a écrit : 2 problèmes |
Merci pour ton aide, j'ai essayé ce que tu me proposes, mais ça ne change rien :s Voici le code mis à jour :
Code :
|
Si je met la fonction dans ma boucle, ça fonctionne, mais comme la fonction est amenée à grandir, j'aimerais pouvoir l'utiliser et ne pas la mettre dans la boucle. Je passerais mal le double pointeur ? Je n'arrive pas à trouver sur le net comment faire ce genre d'opération :s
EDIT : J'ai un peu debugger le programme, et je remarque qu'il plante à la ligne :
*h_InputKey[numLine-1] = (TTrio *) malloc (limit*sizeof(TTrio));
mais pas lors du premier passage, il remplit la première ligne, et lorsqu'il alloue la seconde ligne, il cale :s
Quand on y pense, realloc fonctionne comme un malloc si le premier argument est nul et réalloue de la mémoire si celui-ci est non nul. A mon avis, il y a un bug lors de la réallocation, mais je ne sais pas lequel :s
Marsh Posté le 31-05-2010 à 17:09:11
Code :
|
Les [] ont priorités sur l'étoile (déréférencement). Ce que tu voulais écrire, c'est :
Code :
|
Marsh Posté le 31-05-2010 à 17:16:01
ReplyMarsh Posté le 31-05-2010 à 21:09:03
Shadew a écrit : Merci !!!! C'était ça !!!! Chaud comme problème, merci beaucoup !! |
T'aurais créé une structure contenant
- la matrice
- sa taille
t'aurais eu moins de problème. Déjà tu passais à ta fonction une seule variable au lieu de deux et tu évitais ces triples indirections...
Marsh Posté le 30-05-2010 à 17:35:50
Bonjour,
D'habitude, je galère déjà avec les tableaux de pointeurs, alors maintenant que j'utilise une matrice de pointeurs, je patauge totalement :s
J'essaie de créer une matrice possédant 5 colonnes et dont le nombre de ligne augmente quand le besoin se fait sentir. Voici ce que cela donne en code :
Lorsque j'exécute le code, j'ai droit à un segmentation fault (core dumped). Apparemment, je gère mal un élément de la mémoire :s Quelqu'un pourrait-il m'aider svp ?
Merci !!
Message édité par Shadew le 30-05-2010 à 17:37:54