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

MFC Discussion :

comment réserver 1 plus grande place en mémoire ?


Sujet :

MFC

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

    Informations forums :
    Inscription : juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut comment réserver 1 plus grande place en mémoire ?
    Bonjour, je débute dans la programmation en v c++

    j'ai un programme qui utilise un tableau de float à 3 dimensions
    Sachant que chacune va j'usqu'à 150.
    lorsque je compile, pas de problème mais lors du lancement le programme est fermé automatiquement
    et lors du débuggage, il me dit stack overflow

    pour l'instant, g réduit les dimensions et ça fonctionne mais pour le projet final, il m' en faudrait plus.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 6 414
    Points : 15 795
    Points
    15 795
    Par défaut
    comment aloues-tu ta mémoire ? malloc ? new ?

    Tu peux voir sinon du coté de GlobalAlloc, LocalAlloc, VirtualAlloc suivant les besoins

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2002
    Messages : 225
    Points : 118
    Points
    118
    Par défaut
    Quelle méthode à utiliser selon quel besoin ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    en fait c la déclaration du tableau suivant qui pose problème:

    float Tconso[OFMAX][OPMAX][RMAX];

    à cette ligne le pg s'arrête

    n'est il pas possible de changer 1 option dans vc++ afin qu'1 tableau de cette taille ne bug pas l'exécution?

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 6 414
    Points : 15 795
    Points
    15 795
    Par défaut
    pour faire simple,
    GlobalAlloc c'est pour les objets Ole et le clipboard
    VirtualAlloc c'est pour allouer dans ton processus, tres bien pour les gros tableaux d'objets ou de structure
    HeapAlloc plutot pour allouer beaucoup d'objet de petite taille

    sinon, pour ton problème, tu peux aussi augmenter la taille du heap dans les options :

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    quand j'essaye de placer cette ligne de code dans project options, il me dit:
    "format of decimal number 'EAP' is incorrect"

    dois-je rentrer exactement cette ligne?

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 6 414
    Points : 15 795
    Points
    15 795
    Par défaut
    non, bien sur que non ...
    désolé, si j'ai pas été clair

    il faut rentrer la taille mémoire que tu souhaites, par défaut, la taille du heap est à 1Mo, ca te permet de mettre la valeur que tu souhaites (et dont tu as besoin), pour ca il faut calculer la taille représentée par OFMAX*OPMAX*RMAX*sizeof(float)

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup
    tu as été clair mais bon, faut pas se mentir je suis pas un expert
    une derniere chose et j'arrête de t'ennuyer
    -la taille je la rentre comme premier argument?
    -peux tu m'expliquer où exactement je dois entrer cette ligne (j'ai essayé dans project-->settings-->ressources-->preprocessor definition)


    merci encore

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 6 414
    Points : 15 795
    Points
    15 795
    Par défaut
    et bien ca se passe dans les options de link, tu le rajoutes à la main.

    Par défaut donc, le linker utilise une valeur de 0x100000 (1 Mo) et 0x1000 (4Ko) pour la mémoire commit

    donc si tu veux faire 2 Mo par exemple, tu mets dans les options du linker /HEAP:0x200000, 0x1000

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2005
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C nickel je vien de tester et ça marche
    je te remercierai jamais assez
    a bientôt pour d'autres questions

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 6 414
    Points : 15 795
    Points
    15 795
    Par défaut
    si ca marche, n'oublie pas de cliquer sur Résolu en bas à gauche

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

Discussions similaires

  1. Réponses: 23
    Dernier message: 19/11/2021, 17h43
  2. Réponses: 3
    Dernier message: 20/07/2010, 12h58
  3. Réponses: 8
    Dernier message: 29/01/2010, 15h48
  4. [XL-2003] comment on prend la valeur la plus grande entre 3valeurs
    Par amine2613 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/04/2009, 13h04
  5. Réponses: 4
    Dernier message: 01/02/2007, 20h32

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