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 Delphi Discussion :

Mémoire disponible avant appel d'un SetLength


Sujet :

Langage Delphi

  1. #1
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut Mémoire disponible avant appel d'un SetLength
    Bonjour à tous.

    S'agissant de redimensionner un tableau dynamique array of à l'aide d'une instruction SetLength, si la quantité d'octets demandés en ajout dépasse une certaine valeur, il n'est pas interdit de se retrouver avec une V.A. d'overflow.

    Ma question est simple : comment connaître facilement la place mémoire disponible avant cet appel ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 671
    Points : 25 481
    Points
    25 481
    Par défaut
    V.A. d'overflow.
    Soit c'est une Violation d'Accès en écriture ou lecture
    Soit c'est un Débordement de Pile donc stack overflow : Taille d' un tableau de tableau ou Gestion mémoire Delphi XE

    Un SetLength ne devrait provoquer ni l'un ni l'autre
    Pas de Violation d'Accès car il va allouer une zone mémoire RW et utilise déjà une zone mémoire RW
    Pas de Débordement de Pile puis qu'allouer sur le Tas

    Reste plutôt Mémoire Insuffisante via EOutOfMemory

    Tu dépasse 2Go de mémoire consommé sur un Win32 ?
    C'est beaucoup : Problème de mémoire avec Delphi-5 sous 64 bits

    Il peut y avoir bien avant les 2Go, un trop grand nombre de Handle et son EOutOfResources



    Delphi 7 : GetHeapStatus
    Delphi 2006+ : GetMemoryManagerState

    Windows : GetProcessMemoryInfo ou GlobalMemoryStatus



    Sujet connexe : RAM non utilisée

  3. #3
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut
    Bonjour Shai, je savais que tu me laisserais une bonne réponse et je t'en remercie beaucoup...

    Effectivement je me suis mal exprimé car comme je programme souvent en ASM, je ne reçois pas de message d'erreur, mais des V.A.... Donc il s'agit bien de ne pas aboutir à EOutOfMemory et non OverFlow (Mille excuses...)

    La solution par GetHeapStatus sous Delphi 7... Très bien !

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

Discussions similaires

  1. Mémoire disponible sur le serveur
    Par seblo_scoqi dans le forum Langage
    Réponses: 3
    Dernier message: 16/01/2008, 14h55
  2. Avez vous une explication à la chute de la mémoire disponible ?
    Par blue dans le forum Administration système
    Réponses: 5
    Dernier message: 05/06/2007, 14h49
  3. Réponses: 1
    Dernier message: 25/05/2007, 10h38
  4. [WebForms]convertion caracteres speciaux avant appel proc. stockee
    Par jejefeds dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 03/01/2007, 10h42
  5. problème Mémoire avant appel au main ?
    Par benhoeil dans le forum C
    Réponses: 18
    Dernier message: 13/10/2006, 11h24

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