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 :

Pas assez de mémoire sous win64 ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut Pas assez de mémoire sous win64 ?
    J'ai un programme qui tourne sans soucis depuis des années sous Win2000, XP, Win Server 2003, etc. En 32 bits donc, compilé depuis des sources C++.

    Ce même programme (je veux dire exactement le même binaire 32bits) se plante lors d'une allocation de 125MB environ sous Win Server 2008/64. Comme s'il n'y avait pas assez de mémoire !
    Au total le prg consomme en pointe 960MB (d'après le "task manager" ou "gestionnaire de tache"), bien en dessous de la limite de 2GB.

    Je me suis dit qu'il pouvait y avoir une fragmentation de la mémoire qui empêche l'allocation du gros bloc, mais alors pourquoi je n'ai jamais eu ce problème sous Win32, même avec 1GB de mémoire réel (avec swap disque et donc lenteur, mais jamais plantage).

    Bref, je ne comprend pas. J'ai pourtant bien droit un espace de mémoire virtuelle de 2GB, non ? (la machine possède 16Gb réel).
    Comprend pas...

    Merci pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Tu as recompilé ton code en 64bits?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Ce n'est pas une option à court terme.
    Les sources sont compilées avec un compilateur des années '90. Il ne suffit de dire "target is 64 bits".


    En gros je demande si vous avez déjà rencontré ce cas ou un OS64 serait plus limité en resource mémoire pour les applications 32 que sous un vrai OS32 (Windows64 vs Windows32 en l'occurence).

  4. #4
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Perso je n'ai pas rencontré se problème, mais celà pourrait éventuellement cacher un bug qui n'apparaissait pas avant.
    De ma propre expérience chaque vois que je fais évoluer ma plateforme, je découvre des problèmes qui n'apparaissaient pas avant.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    L'endroit où ça plante est parfaitement localisé, c'est dans le premier appel à un push_back() peu après l'exécution de ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::vector<SProperty> f_propArr;
     
    ...
    	f_propArr.reserve(f_prepropArr.size());
    	std::cout << "\tvector<SProperty> capacity: " << f_propArr.capacity()
    		<< " * " << sizeof(SProperty) << " = " << f_propArr.capacity()*sizeof(SProperty) << std::endl;
    A l'affichage/log on voit bien que l'allocation de mémoire dans le std::vector.reserve() a échoué.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Tu peux réduire à un expl minimal qui reproduise.
    Parce que je vois : sois le changement de plateforme révèle un bug ailleurs dans votre code, sois un problème windows ?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/05/2008, 18h14
  2. API window = pas assez de mémoire
    Par casafa dans le forum Windows
    Réponses: 18
    Dernier message: 17/12/2007, 11h16
  3. Pas assez de mémoire MySQL ?
    Par sliderman dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 12/12/2007, 09h13
  4. Pas assez de mémoire pour exécuter un code
    Par med_ellouze dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2007, 02h51
  5. [CKEditor] IE7 me dit que j'ai pas assez de mémoire?!
    Par haltabush dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 15/02/2007, 16h37

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