[C] malloc, realloc
Fermé
Newbie
-
22 mai 2006 à 23:06
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 30 déc. 2007 à 19:41
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 30 déc. 2007 à 19:41
3 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
30 déc. 2007 à 19:41
30 déc. 2007 à 19:41
Non si c'est un tableau m * n :
Bonne chance
unsigned i,n=5,m=7; char **tab_2d = (char *)malloc(m*sizeof(char *)); for(i=0;i<m;++i) tab_2d[i] = (char *)malloc(n*sizeof(char)); //... for(i=0;i<m;++i) free(tab_2d[i]); free(tab_2d);
Bonne chance
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
23 mai 2006 à 01:39
23 mai 2006 à 01:39
Je suppose que tu veux stocker un tableau de chaine de caractère. Le problème c'est qu'il faut a priori connaitre le nombre de chaîne que tu vas stocker.
Je rappelle que malloc renvoie l'adresse au début d'une plage qu'il reserve et dont la taille est passé en paramètre. De manière général on écrit pour un tableau de n cases :
Il suffit de changer dans ton cas plop par char * :
Pour realloc c'est le même principe. Pour plus d'infos je t'invite à taper dans une console :
De manière générale faire un realloc est une mauvise idée, car il vaut mieux allouer directement la place requise (quand elle est connue :p).
Bonne chance
Je rappelle que malloc renvoie l'adresse au début d'une plage qu'il reserve et dont la taille est passé en paramètre. De manière général on écrit pour un tableau de n cases :
plop * p = (plop *)malloc(n*sizeof(plop));
Il suffit de changer dans ton cas plop par char * :
char ** p = (char **)malloc(n*sizeof(char *));
Pour realloc c'est le même principe. Pour plus d'infos je t'invite à taper dans une console :
man malloc man calloc man realloc
De manière générale faire un realloc est une mauvise idée, car il vaut mieux allouer directement la place requise (quand elle est connue :p).
Bonne chance