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 :

allocation tableau 3 dimensions


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Par défaut allocation tableau 3 dimensions
    Pourkoi ca marche pas ?
    A l'execution VC6 m affiche acces violation des le premier passage dans la boucle

    float ***data;
    for(i=0;i<truc;i++)
    {
    for(j=0;j<deltaY;j++)
    {
    data[i][j] = new float[deltaX];
    }
    }

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    float ***data;
    data = new float**[truc];
    for(i=0;i<truc;i++)
    {
    date[i] = new float*[deltaY];
    for(j=0;j<deltaY;j++)
    {
    data[i][j] = new float[deltaX];
    }
    }
    PS: Je le dis moi-même pour éviter qu'un gourou vienne te le dire: "utilise des std::vector à la place"
    (bon, moi, je viens du C, je préfère aussi le tableau de tableaux de tableaux)
    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.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    dans data[i][j], je ne vois que deux dimensions...

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 13
    Par défaut
    ok merci ca marche

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par poukill
    dans data[i][j], je ne vois que deux dimensions...
    normal, c'est juste pour l'allocation

    Je suis plutôt partisan de l'allocation d'un gros buffer wrappé dans une classe qui gèrera l'accès correctement. Ca évite des problèmes de performances et de cache à cause du fractionnement de la mémoire.

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    au temps pour moi....
    Pas mal ton idée de buffer... Bien sur, de l'idée au programme, y'a un monde, mais c'est une bonne idée!

  7. #7
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    En parlant d'un gros buffer "wrappé", tu fais allusion a kelke chose de precis ou c du fantasme, voir de la divagation artistique?

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par Médinoc
    PS: Je le dis moi-même pour éviter qu'un gourou vienne te le dire: "utilise des std::vector à la place"
    Meuh non. Tout de suite.
    boost.multi_array ou n'importe qu'elle classe matricielle sera plus adaptée

    Et avoue qu'avec un background C tu aurais plutôt alloué de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const size_t offset = sizeof(float*)*L;
    char * buffer = new char[sizeof(float) * L*C + offset];
    float ** mat = reinterpret_cast<float**>(buffer);
    for (int l=0 ; l!=L ;++l)
        mat[l] = reinterpret_cast<float*>(buffer[offset + C*l*sizeof(float)]);
    // si il y a des des erreurs dans le code, cela ne fait que démontrer
    // que ce genre de hacks bas niveau doivent être encapsulés. 
    // Et puisqu'on en parle .. les bibliothèques matricielles qui existent 
    // déjà sont nos amies.
    Tiens. Je n'avais pas lu l'intégralité de la discussion. J3 ^^'3n v415 d1v46u3r 4v3c ^^1||35.

    EDIT: Mon 3|337 prend la poussière.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Allocation tableau double dimension
    Par MeWaa dans le forum C
    Réponses: 4
    Dernier message: 01/02/2010, 18h21
  2. [C]Allocation d'un tableau à deux dimensions
    Par Geoffrey49000 dans le forum Windows
    Réponses: 5
    Dernier message: 07/12/2007, 00h06
  3. Réponses: 9
    Dernier message: 12/06/2007, 14h15
  4. Réponses: 5
    Dernier message: 06/02/2007, 09h26
  5. Réponses: 2
    Dernier message: 14/12/2006, 15h34

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