IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Tableau 2x2 dynamique


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Par défaut Tableau 2x2 dynamique
    Bonjour
    Je cherche à créer un tableau 2x2 dont la taille est déterminée à l'exécution donc obligé d'utiliser l'allocation dynamique.
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include<stdio.h>
     
    int main(void)
    {
        int i, j, **matrice;
     
        matrice = (int *) malloc( 3*sizeof(int*));    
     
        for( i=0;i<3;i++ )
             matrice[i] = (int) malloc (3*sizeof(int));        
     
        for(i=0;i<3;i++)
        {
           for(j=0;j<3;j++)
           {            
                  matrice[i][j]=0;
                  printf(" %d ",matrice[i][j]);           
            }
           printf("\n");       
        }  
     
        for ( i = 0 ; i<3 ; i++)
            free( (void *) matrice[i] );
     
        free( (void *) matrice );
     
        getch();
     return 0;   
    }
    Je voudrais savoir si cette méthode est bonne et n'occasionne pas de bug. La libération de mémoire est-elle correcte ???
    Merci
    A+

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Tu veux dire un tableau 2D ?
    • Déjà, tu ne sépares pas assez ton code: L'allocation devrait être dans une fonction séparée qui prend les tailles en paramètre plutôt que de forcer 3x3.
    • Ensuite, il y a beaucoup de casts inutiles.
    • Puis, ton code ne gère pas l'échec de malloc().

    En fait, je te conseille de faire moins d'appel à malloc(). Par exemple, te limiter à une allocation par dimension: http://www.developpez.net/forums/m1803870-7/
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. filtrer tableau croisé dynamique sous excel
    Par kernel57 dans le forum Excel
    Réponses: 7
    Dernier message: 17/11/2006, 14h18
  2. Tableau croisé dynamique
    Par papy_tergnier dans le forum Access
    Réponses: 5
    Dernier message: 26/12/2005, 18h05
  3. tableau croisé dynamique sous delphi, comment ?
    Par Brice Yao dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/07/2005, 09h33
  4. Tableau ouvert / dynamique ?
    Par Dry dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2004, 11h54
  5. [Tableau] Allocation dynamique du contenu
    Par VincenzoR dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 08/05/2004, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo