Rechercher : dans
Par :

[C] malloc, realloc

Dernière réponse le 30 déc 2007 à 19:41:02 Newbie, le 22 mai 2006 à 23:06:39 
 Signaler ce message aux modérateurs

Bonjour,

je voudrais savoir si quelqu'un pouvais m'écrire un exemple pour l'allocation d'un tableau de char **tab de taille n (malloc) ainsi que la manière de procéder à sa réallocation (realloc) si ce tableau est trop petit.

Merci par avance

Meilleures réponses pour « [C] malloc, realloc » dans :
3D Secure / Verified by Visa / SecureCode: Qu'est-ce que c'est ? VoirDepuis octobre 2008, les banques et commerçants en ligne ont commencé à adopter le système 3DSecure pour les paiements sur Internet. Qu'est-ce que c'est ? 3DSecure est appelé "Verified by Visa" chez Visa, et "SecureCode" chez Mastercard. (Les logos...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
Télécharger Visual C++ 2008 Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...

1

mamiemando, le 23 mai 2006 à 01:39:27

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 :

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

Répondre à mamiemando

2

NoR, le 25 déc 2007 à 12:35:36

J pense ke là c 1 tableau double dimension donc il faudrais plutôt faire(j'ai supposais que les deux dim sont égal)
char ** p = (char **)malloc(n*n*sizeof(char *));

Répondre à NoR

3

 mamiemando, le 30 déc 2007 à 19:41:02

Non si c'est un tableau m * n :

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

Répondre à mamiemando