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 trop grand


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de smartties
    Homme Profil pro
    Dev
    Inscrit en
    Février 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2010
    Messages : 222
    Par défaut tableau trop grand
    Salut alors voila je bloque sur un petit détail.En ce moment je fait un petit programme qui nécessite de stocker des positions dans un tableau a deux indices
    comme ceux ci :
    Déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int tablo[800][1200] = {0};
    Quand je compile, mon programme plante. J'ai essayé de diviser mon tableau en plusieurs tableau comme ceci :
    Déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     int tablo1[80][1200] = {0},
     tablo2[80][1200] = {0},
     tablo3[80][1200] = {0},
     tablo4[80][1200] = {0},
     tablo5[80][1200] = {0},
     tablo6[80][1200] = {0},
     tablo7[80][1200] = {0},
     tablo8[80][1200] = {0},
     tablo9[80][1200] = {0},
     tablo10[80][1200] = {0};
    Mais au moment de la compilation, l'aplication s'affiche bien mais plante comme avant.Donc je voulais savoir si il y avait un moyen de creer un Tableau avec Deux indice avec pour premier indice 800, et pour deuxieme indice 1200, sans faire planter tout le programme.
    merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Ta question est trop vague. Est-ce que tu peux nous montrer ton code ?

    Le mieux, c'est d'allouer dynamiquement de la mémoire pour ton tableau.

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Ton tableau est trop grand pour être créé sur la pile, donc en variable locale.

    Deux solutions
    - Le déclarer en variable globale
    - Le créer par allocation dynamique. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef  int Ligne[1200];
    ....
      Ligne * tab = malloc( 800* sizeof *tab);
      if(tab != NULL)
      {
        //... tab[i][j] =....;
        free(tab);
      }
    ....

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Par défaut
    Bonsoir,
    Ton tableau d'entier a la taille suivante sur architecture 32 bits :
    sizeof(int) =4 octets =>
    taille = 4* 800 * 1200 =3840000 octets soit environ 3,7Mo.
    Ton tableau est déclaré de manière statique, et la place est donc réservée dans la pile.

    Tu peux t'apercevoir en tapant 'ulimit -s' que tu éclates largement ta pile par défaut, de 8Ko chez moi :
    ulimit -s
    8192

    Tu dois utiliser l'allocation dynamique pour que la mémoire soit prise sur le tas.

  5. #5
    Membre chevronné Avatar de smartties
    Homme Profil pro
    Dev
    Inscrit en
    Février 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2010
    Messages : 222
    Par défaut
    Oo super sa marche !

    Merci pour ces reponses aussi rapide ^^.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau trop grand
    Par dannhil dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 14
    Dernier message: 20/10/2008, 02h36
  2. Tableau trop grand sur FF
    Par kevinf dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/06/2008, 20h16
  3. taille tableau trop grande
    Par zhao dans le forum C++
    Réponses: 12
    Dernier message: 26/03/2008, 15h59
  4. [VBA-W2007]scinder automatiquement un tableau trop grand
    Par tazamorte dans le forum VBA Word
    Réponses: 3
    Dernier message: 22/06/2007, 17h28
  5. tableau trop grand ?
    Par Praxe dans le forum C++
    Réponses: 17
    Dernier message: 17/03/2005, 14h14

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