Allocation de memoire dynamique pour matrice

Résolu
rocksider Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -  
rocksider Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai esseyé de créé une matrice de int en mémoire dynamique mais apparement ça marche pas et me donne une erreur voilà la ligne ou plutot le bout du code:

int longeur,profond,i;
int **laby;

printf("Donner la longeur du labyrinthe:");
scanf("%d",&longeur);
printf("Donner la profondeur du labyrinthe:");
scanf("%d",&profond);
for(i=0;i<profond;i++)
{
*(laby+i)=(int *)malloc(longeur*sizeof(int));
}

avez vous une idéé?

2 réponses

bizu53 Messages postés 1274 Date d'inscription   Statut Membre Dernière intervention   861
 
En effet il te manque l'allocation de la première dimension de ta matrice.
Pour ma part, et ce n'est pas faux, je me représente une matrice comme une liste de listes.

Pour ton cas, tu déclare un (int**) mais tu as oublié d'allouer premièrement une liste de (int*) ; ayant pour longueur dans ton cas : profond.
Une fois cette liste de (int*) tu alloues la taille de la deuxième dimension ; dans ton cas longueur

Donc juste avant la for, recopie en modifiant simplement le cast et le sizeof de ta ligne du malloc déjà présente pour y allouer une liste d'(int*)

laby=(int **) malloc(profond*sizeof(int*)); 
1