Pourtant dans le main j'ai pris soin d'allouer de la mémoire pour ce pointeur :
1 2
| struct creuse_t * ptr_creuse ;
ptr_creuse = malloc(sizeof(struct creuse_t)) ; |
Cette remarque associée à ce code et en considérant également cette allocation inutile ici :
1 2
| struct cell_t * p ; // pointeur courant
p = malloc(sizeof(struct cell_t)) |
semble montrer une confusion : L'allocation du pointeur est réalisée par sa définition " type * pointeur ; ". Il n'est pas obligatoire de faire derrière un malloc(). La seule obligation est de mettre une adresse valide avant de s'en servir. Dans le deuxième code une valeur sera donnée en temps utile à ce pointeur par
p = *((ptr_matrice->lignes)+i) ;
qui est une manière compliquée d'écrire
p = ptr_matrice->lignes[i];
Par contre, tu ne montres pas du tout comment est initialisée la structure (allouée dynamiquement) qui est pointée par ptr_creuse ni la construction de la matrice creuse. On n'a pas d'informations suffisantes pour établir un diagnostic.
Il faut donner :
1- la définition de struct creuse_t et struct cell_t
2- un code montrant la construction d'une matrice creuse et permettant de reproduire le problème.
Partager