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 :

Bad_alloc sous Linux mais pas sous mac


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut Bad_alloc sous Linux mais pas sous mac
    Bonjour tout le monde,

    Je viens ici pour avoir un petit coup de pouce car j'ai une erreur que je ne comprends pas tout à fait :

    Dans mon programme je lis un fichier en sortie de simulation (format ASCII, environ 6,2 Go). A priori aucun probleme à la lecture, j'instancie une classe avec les paramètres qui m'intéressent, pour chaque ligne du fichier, et j'enregistre dans un vecteur. Ensuite j'utlise un second vecteur avec des objets d'une autre classe et c'est là que ça bloque : j'obtiens un bad_alloc mais seulement sous Linux. Cependant celà fonctionne parfaitement si mon fichier fait moins de 4 Go.

    Il est à noter que ce bug intervient uniquement sur ma machine Linux (2.4GHz - 4 Go de ram - Ubuntu 12.10 64 bits - GCC 4.6.3) mais pas sur mon mac (seulement 2.16 GHz - 2Go de ram - osX 10.6.8 64 bits - GCC 4.2.1)

    Si certains d'entre vous auraient la solution ou de bonnes idées je suis preneur !

    Quoi qu'il en soit je vous remercie d'avoir prêté attention à ce poste.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Je pense que tu as un bad_alloc car tu n'as plus de mémoire disponible.
    As-tu essayé d'augmenter la taille de ta partition swap ?

  3. #3
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Ben le truc c'est que je ne vois pas comment je pourrais arriver à cours de mémoire après avoir déjà chargé plus de 6 Go de données (remplissage du premier vecteur) alors que je n'ai que 4 Go de RAM sous Linux. Le bad_alloc n'arrive qu'au cours du remplissage du second vecteur.
    Par ailleurs avec seulement 2Go de ram sous mac cette erreur devrait survenir plus tôt mais tout fonctionne parfaitement...

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par betaplus Voir le message
    Ben le truc c'est que je ne vois pas comment je pourrais arriver à cours de mémoire après avoir déjà chargé plus de 6 Go de données (remplissage du premier vecteur) alors que je n'ai que 4 Go de RAM sous Linux. Le bad_alloc n'arrive qu'au cours du remplissage du second vecteur.
    Par ailleurs avec seulement 2Go de ram sous mac cette erreur devrait survenir plus tôt mais tout fonctionne parfaitement...
    Les Unix-like utilisent une partition SWAP quand la mémoire RAM est pleine.
    Il y a un système de "page" qui passent de la partition SWAP à la RAM quand on en a besoin et inversement quand le on n'en a plus l'utilité et qu'on manque de mémoire.

    Peut-être que ces liens t'intéresseront :
    http://en.wikipedia.org/wiki/Expanded_memory
    http://en.wikipedia.org/wiki/Memory_management_unit

  5. #5
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Bien vu ! Je pensais que la taille du buffer était gérée différemment. Bref, c'est résolu et je me coucherai moins bête ce soir.

    Merci à toi !

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

Discussions similaires

  1. [Prob] code qui fonctionne sous windows mais pas sous linux
    Par hannibal.76 dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/02/2011, 17h46
  2. Script qui marche sous Linux mais pas sous Windows et vice versa
    Par tu-phat dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 26/11/2009, 02h39
  3. Mon fichier gtkrc fonctionne sous windows mais pas sous Linux !
    Par Kicker dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 24/04/2009, 12h54
  4. Réponses: 5
    Dernier message: 13/04/2009, 23h12
  5. [JMF] Code fonctionnant sous Linux mais pas sous XP
    Par Monsieur_Max dans le forum Multimédia
    Réponses: 4
    Dernier message: 25/05/2006, 18h57

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