Allocation de memoire dynamique pour matrice

Résolu/Fermé
rocksider Messages postés 106 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 16 mars 2012 - 30 nov. 2008 à 13:48
rocksider Messages postés 106 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 16 mars 2012 - 30 nov. 2008 à 22:45
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 samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
30 nov. 2008 à 14:17
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