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

Langage C++ Discussion :

Allocation mémoire forcée


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par défaut Allocation mémoire forcée

    Bonjour,

    je me trouve dans une situation où je dois utiliser un très grand espace mémoire pour le
    stockage de mes variables. Je cherche une alternative, mais en attendant, j'aurai aimé
    pouvoir faire tourner mon algorithme sur mes données, ce qui me ferai gagner du temps
    en attendant d'optimiser mon programme.

    Alors voilà, je dois stocker beaucoup d'informations en plus de mes données et je voulais
    savoir si on ne pouvait pas imposer une taille de mémoire avant le lancement du
    programme. Quelque chose qui dirait :

    " Avant toute chose, je veux que tu réserves 10 Go de mémoire "

    Si quelqu'un pouvait m'aider, merci.


    Gruz

  2. #2
    Membre expérimenté Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par défaut
    Bonjour,
    Le problème est-il de "pré-allouer" de la mémoire(style pool mémoire), ou bien d'allouer une grande quantité de mémoire? Ce sont deux problèmes différents.

    Pour le pool mémoire il existe des solution toute faite comme boost::pool ou le SmallObjectAllocator de Loki.

    Mais j'ai l'impression que votre problème réside plus dans l'allocation d'une grande quantité de mémoire.
    Pour une tel quantité(10Go), il va vous falloir un OS 64bit, et une compilation 64bit. De plus, votre machine doit avoir les 10Go de libre en RAM. Si toutes ces conditions sont réunis, il n'y as, généralement, rien a faire de plus.

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par défaut
    Tout d'abord, merci Nogane pour votre réponse.

    Je tourne effectivement sur une machine 64 bits avec 24 Go de RAM je crois, mais apparemment ça ne fonctionne pas
    Mon programme fonctionne à merveille sur des petits jeux de données.

    Faut-il que je déclare quelque chose pendant la compilation pour l'avoir en 64 bit ?

    Je tourne sous Linux et utilise un makefile à base de g++ mais il ne me semble pas préciser quelque part que je tourne en 64 bits.

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 366
    Par défaut
    Citation Envoyé par Gruzzyh2 Voir le message
    Tout d'abord, merci Nogane pour votre réponse.

    Je tourne effectivement sur une machine 64 bits avec 24 Go de RAM je crois, mais apparemment ça ne fonctionne pas
    Mon programme fonctionne à merveille sur des petits jeux de données.

    Faut-il que je déclare quelque chose pendant la compilation pour l'avoir en 64 bit ?

    Je tourne sous Linux et utilise un makefile à base de g++ mais il ne me semble pas préciser quelque part que je tourne en 64 bits.
    J'ai lu çà sur un autre topic de developpez.com:

    Citation Envoyé par Suryavarman
    nativement gcc est en 64 bit et il est nécessaire de mettre l'option -m32 pour le forcer en 32bits.

    Ce qui veut sûrement dire d'en ton cas qu'il est nécessaire d'avoir la dernière où plus récente mise à jour de gcc. ( ou que tu n'as pas un système 64bits ou un matériel 64bits )
    Source: http://www.developpez.net/forums/d39...m64-ne-marche/

    Quelle est l'erreur que tu as?

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par défaut
    Quelle est l'erreur que tu as?
    J'ai un bad alloc et parfois un segmentation fault. Sur certains tests, il me créé un des tableaux, il arrive à lire toutes les premières entrées; et un certain nombre des dernières, mais au milieu il se perd (segmentation fault). En sachant que je les ai initialisées.

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 366
    Par défaut
    Citation Envoyé par Gruzzyh2 Voir le message
    J'ai un bad alloc et parfois un segmentation fault. Sur certains tests, il me créé un des tableaux, il arrive à lire toutes les premières entrées; et un certain nombre des dernières, mais au milieu il se perd.
    Donc il arrive probablement au bout de la mémoire qu'il peut allouer.
    1. il a 24 Go de RAM, donc coté mémoire, çà devrait être bon. Quand tu le fais tourner, combien de mémoire disponible te reste t'il?
    2. Quelle est ta version de gcc?
    3. Peux tu montrer les options de compilation que tu utilises?

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

Discussions similaires

  1. Pb d'allocation mémoire malloc
    Par oz80 dans le forum C++
    Réponses: 5
    Dernier message: 18/11/2005, 17h23
  2. Limite Allocation Mémoire d'un tableau d'entier
    Par l9ft b9hind dans le forum C++
    Réponses: 5
    Dernier message: 27/10/2005, 19h29
  3. Allocation mémoire
    Par DestyNov@ dans le forum C++
    Réponses: 9
    Dernier message: 23/08/2005, 08h09
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. Allocation mémoire dynamique
    Par ITISAR dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2005, 09h59

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