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

Turbo Pascal Discussion :

[BP7] Problème d'allocation de plus de 64K de mémoire [BPW]


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut [résolu][BP7] Problème d'allocation de plus de 64K de mémoire
    bonjour a tous.

    rentrons directement de vif du sujet.
    Je viens de récuper un programme dans ce charmant languages qu'est le turbo pascal qui fonctionnait tres bien. aucune erreur jusqu'au jour ou une erreur apparut un bug dans le programme. a moi de trouver pourquoi et de resoudre ce grave problème. pour information je ne connaissait pas le turbo pascal jusqu'a avant hier

    donc apres plusieurs essai afin de reproduire le bug et de writeln afin de voir ou se situe le probleme. j'ai enfin trouver pourquoi ca plante.

    il s'agit d'une petite procedure que tous programmeur doit connaitre a savoir "getmem" qui me retourne le message d'erreur suivant "run-time error 215".

    apres quelque recherche je me suis rendu compte que la procedure "getmem" ne peut pas allouer plus de 64ko. et voila mon problème. j'ai besoin de plus de memoire pour mon tableau dynamique.

    alors voila ma question comment faire pour allouer plus de memoire?

    pour info voici une petite partie du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    type
        t_Pt_Frequence = ^t_array_of_double;
        t_array_of_double = array[0..0] of double;
     
    var
        Frequence : t_Pt_Frequence;
     
    begin
       ....
       getmen(Frequence,sizeof(double)*(nbr_ech));
       ....
    end.
    nbr_ech est une variable pouvant depasser 8192.

    merci de me repondre.
    a bientot.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hai,

    Comme tu l'as dit, tu butes sur la limite des 64K.

    Solution la plus efficace : changer de compilateur pour Free Pascal, qui compile pour du mode protégé 32 bits, et adieu cette limite, mais demandera quand même quelques adaptations, pour la taille des types de base en particulier (Integer devient 4 octets au lieu de 2)

    Beaucoup moins efficace et beaucoup plus ch**nt : reprendre le programme, et subdiviser le tableau en plusieurs autres, et jongler avec les indices.

  3. #3
    Membre confirmé Avatar de Transgarp
    Profil pro
    Inscrit en
    Février 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 99
    Par défaut
    Bizarre, avec BP7 en mode DPMI j'utilise facilement 15M de mémoire pour mes variables, stacks, tableaux, etc...

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    C'est peut-être parce qu'il n'utilise pas DPMI qu'il pose sa question ?...

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut
    bonjour a tous merci pour vos réponses.

    je n'ai pas pu répondre plus tot car je n'avais pas d'acces a internet

    pour resoudre mon problème j'ai supprimé les tableaux et les ai transformé en liste chainé.

    résultat plus de probleme d'allocation par contre le temps d'acces est beaucoup plus long, mais ce n'est pas critique pour le systeme.

    Sinon vous parlez de DPMI qu'est-ce ?

    bonnne jjournée a tous.

  6. #6
    Membre confirmé Avatar de Transgarp
    Profil pro
    Inscrit en
    Février 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 99
    Par défaut
    Avec BP7 on a le choix de compiler en 3 modes :
    -Real Mode
    -Protected Mode (DPMI)
    -Windows Mode

    Le Real mode permet de tracer le programme ligne par ligne, mais limite l'accès de la mémoire à 64K

    Le Protected Mode ne permet pas de tracer le programme ligne par ligne, mais permet l'accès de 15M de mémoire

    On clique l'onglet Compile dans la barre de commande et ensuite Target dans la fenêtre

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

Discussions similaires

  1. Problème d'allocator
    Par Quark-Up dans le forum C++
    Réponses: 4
    Dernier message: 23/03/2006, 01h37
  2. Problème d'allocation mémoire
    Par cali1983 dans le forum C++
    Réponses: 10
    Dernier message: 10/03/2006, 23h23
  3. Problème d'allocation de mémoire dans la pile
    Par prophet666 dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 19/01/2006, 02h22
  4. fenetre MDI - problème d'allocation
    Par say dans le forum C++Builder
    Réponses: 8
    Dernier message: 03/11/2005, 17h06
  5. Question sur les problèmes d'allocation dynamique
    Par slylafone dans le forum C++
    Réponses: 23
    Dernier message: 25/10/2004, 14h18

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