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 et taille memoire


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Tableau et taille memoire
    Bonjour,

    j'ai une question elementaire
    soit le main() suivant

    int T1[28224][12];
    float T11[28224][12][2];

    int T2[14112][24];
    float T22[14112][24][2];

    float T3[14112][24][4];
    cout<<sizeof(T3)<<endl;

    alors a l'execution j'ai segmentation fault

    si je ne fais pas de sizeof l'execution s'effectue normalenment
    y'a t il une limitation mémoire ????

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    La pile a une taille limite. Il arive un moment où les tableaux statiques doivent être abandonnées pour des données plus dynamiques (vecteurs, boost.multi_array, ...)
    Le fait que tu aies une segfault juste à cause de l'affichage du sizeof me parait tout de même étrange. Cela aurait du planter avant.
    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...

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 47
    Points : 58
    Points
    58
    Par défaut
    Pas forcément, parce qu'il faut un appel à une fonction et comme il a potentiellement une pile corrompu, ça ne plante qu'à ce moment.

  4. #4
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    CroustRyu :
    Pas forcément, parce qu'il faut un appel à une fonction
    Oui, mais sizeof n'est pas une fonction et la valeur de sizeof(T3) résolue à la compilation. Je suis l'avis de
    Luc :
    Le fait que tu aies une segfault juste à cause de l'affichage du sizeof me parait tout de même étrange.
    Le plantage doit être ailleurs et n'apparait ici que fortuitement.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par diogene
    Oui, mais sizeof n'est pas une fonction et la valeur de sizeof(T3) résolue à la compilation.
    c'est d'ailleurs pour ça qu'en C++ sur des variables l'opérateur C++ n'a pas besoin de parenthèses, afin de le distinguer d'une fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float T3[14112][24][4]; 
    cout<< sizeof T3 <<endl;

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    je pense que ça plante aussi avec cout << endl tout court: L'appel aux fonctions du flux doit provoquer la segfault, pusique la pile a vraisemblablement débordé...

    On peut supposer que ça ne plate pas plus tôt parce que le tableau n'est pas initialisé...
    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. detection de frequence CPU et taille memoire
    Par gargle dans le forum MFC
    Réponses: 9
    Dernier message: 06/03/2007, 15h44
  2. [XSL~FO]tableau de taille dynamique
    Par sozie9372 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/07/2006, 17h57
  3. [HTML]Cellule de tableau à la taille d'une image (auto)
    Par leup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 13/05/2006, 14h43
  4. [TP] Tableau de taille variable
    Par Ripley dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 30/01/2006, 15h36
  5. [c++] Tableau avec taille initiale dynamique
    Par mister3957 dans le forum C++
    Réponses: 15
    Dernier message: 22/11/2005, 11h33

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