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 dynamique de mémoire : Limitations ?


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 48
    Points : 46
    Points
    46
    Par défaut Allocation dynamique de mémoire : Limitations ?
    Bonjour à tous,
    Mon problème est le suivant. Je tente d'allouer un tableau de grande taille (640Mo) de manière dynamique avec l'opérateur new classique du C++... Je dispose d'1Go de RAM et cette dernière n'est a priori pas surchargée lors de l'exécution de mon programme... J'ai cependant une erreur std::bad_alloc (St9bad_alloc pour être précis) à l'exécution qui m'étonne un peu !!! Y a-t-il des précautions particulières à prendre à la compilation lorsque l'on souhaite manipuler de telles tailles de mémoire ? Quelqu'un aurait-il une idée de l'origine de l'erreur ? Je précise que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double *array = new double[20000000]
    fonctionne, tandis que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double *array = new double[80000000]
    me renvoie le message d'erreur cité précédemment. Merci pour vos réponses !

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    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 750
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Tu as combien de mémoire libre ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    tu n'as pas une autre manière pour allouer 640Mo ?

    Pourquoi en un seul bloc ?
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 48
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses mais finalement je vais essayer de voir comment faire autrement que d'allouer un si gros tableau (volume SCANNER pour information). Pouvoir utiliser un tableau de 640Mo aurait certainement était plus simple et même je pense plus rapide pour mon algo mais je vais réfléchir à autre chose !

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    De toute façon, un tableau ou un pointeur, la zone mémoire sera contigue. Au lieu d'avoir une allocation mémoire sur la pile avec un tableau, tu l'auras sur le tas avec le pointeur.

    Le résultat sera le même.
    Nul ne peut mieux connaitre la connaissance qu'elle-même.

  6. #6
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Utilises-peut-être un std::deque<> plutôt qu'un new, il te construira ton énorme "vecteur" au fur et à mesure.

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

Discussions similaires

  1. Allocation dynamique et mémoire virutelle
    Par mambo dans le forum Visual C++
    Réponses: 1
    Dernier message: 31/05/2007, 09h46
  2. probleme d'allocation dynamique de mémoire
    Par Blo0d4x3 dans le forum C
    Réponses: 2
    Dernier message: 13/03/2007, 07h53
  3. Allocation dynamique de mémoire
    Par cd090580 dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 12/11/2005, 11h17
  4. [VC++/ASM] Allocation dynamique de mémoire ?
    Par Magus (Dave) dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 21/12/2004, 15h05
  5. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31

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