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