Allocation dynamique

youssefmahdia Messages postés 25 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 12 juin 2011 - 21 avril 2008 à 17:08
youssefmahdia Messages postés 25 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 12 juin 2011 - 21 avril 2008 à 21:16
salut les amis,
ma question c'est comment utiliser l'allocation dynamique pour un tableau à trois dimensions,
je veux un exemple SVP.
merci

7 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 avril 2008 à 18:01
Pour allouer

int i , j;

char ***toto = (char***)malloc(50*sizeof(char***));

for(i = 0; i < 50; i++) {
    toto[i] = (char**)malloc(50*sizeof(char**));
    for(j = 0; j < 50; j++) {
       toto[i][j] = (char*)malloc(50);
    }
}

Puis pour libérer:

for(i = 0; i < 50; i++) {
    for(j = 0; j < 50; j++) {
        free(toto[i][j]);
    }
    free(toto[i]);
}

free(toto);

C++ (@++)
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 avril 2008 à 18:02
Cette exemple est pour un tableau 3D de 50 par 50 par 50

C++ (@++)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 avril 2008 à 18:26
Si on indexe "à la main":
1 seule alloc, 1 seule libération et aucune boucle.

ciao...
BruNews, MVP VC++
0
youssefmahdia Messages postés 25 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 12 juin 2011
21 avril 2008 à 21:02
merci monsieur poour votre réponse,
mais je veus une allocation dynamique d'un  tableau d'entiers.
comment ça se fait?
merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 avril 2008 à 21:12
Même principe sauf que l'on remplace les char par des int:

int i , j;

int ***toto = (int ***)malloc(50*sizeof(int **));

for(i = 0; i < 50; i++) {
    toto[i] = (int **)malloc(50*sizeof(int *));
    for(j = 0; j < 50; j++) {
       toto[i][j] = (int *)malloc(50*sizeof(int));
    }
}

C++ (@++)
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
21 avril 2008 à 21:14
et en passant les char c'est des entiers.
0
youssefmahdia Messages postés 25 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 12 juin 2011
21 avril 2008 à 21:16
merci beaucoup monsieur, ça va g compris maintenant.
merci de nouveau
0
Rejoignez-nous