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 -
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éé?
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éé?
A voir également:
- Matrice dynamique c
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Impossible d'afficher le rapport de tableau croisé dynamique sur un rapport existant ✓ - Forum Excel
- Liste déroulante dynamique excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
2 réponses
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*)
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*));