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++/CLI Discussion :

taille maximale d'un std:list


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut taille maximale d'un std:list
    Bonjour à tous,

    Y a t il un maximum de taille pour une liste : pas en ce qui concerne le nombre d'éléments mais la taille totale d'un liste dans la mémoire?


    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 514
    Par défaut
    Probablement, et cela doit être fonction de l'implémentation de la STL, du système hôte et de l'environnement au Runtime.

  3. #3
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    ok mais y pas une foction que peux me determiner ça ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 514
    Par défaut
    Comme cette limitation peut-être être liée à des conditions transitoires, vous ne pourrez jamais avoir la certitude que l'insertion fonctionnera.

    Vous pouvez avoir la taille maximale d'une liste dans l’absolue (fonction de l'implémentation STL utilisée) : max_size

    http://www.cplusplus.com/reference/stl/list/max_size/

    Mais elle garantie juste que si vous essayez dans mettre plus ça plante, pas que si vous en mettez moins elle ne plantera jamais.

    Si vous maitrisez bien les exceptions, ce genre de gestion des problèmes ne devrait pas trop vous surprendre.

  5. #5
    Membre éclairé
    Étudiant
    Inscrit en
    Août 2008
    Messages
    349
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2008
    Messages : 349
    Par défaut
    mais en fait le max_size() ça définit mex nombre d'élément pas la taille en mémoire la liste

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 514
    Par défaut
    Je ne comprends pas trop votre problème.

    Dans la Doc :http://www.cplusplus.com/reference/stl/list/push_back/

    Return value
    none

    The storage for the new element is allocated using Allocator::allocate(), which may throw exceptions on failure (for the default allocator, bad_alloc is thrown if the allocation request does not succeed).
    Le comportement de gestion mémoire de la STL:list est piloté par le paramètre "Allocator" du template std:list.
    Si vous ne spécifiez pas ce paramètre de template, c'est que celui par défaut vous convient (il est fonction de l'implémentation de la STL que vous utilisez).

    A moins d'utiliser un allocateur particulier ou une STL spécialisées, il y a de grandes chances que cet allocateur ne soit limité que par la mémoire disponible par la C-Runtime, elle-même limitée par les plages d'espace d'adressage virtuelle encore disponibles à un moment T.

    Le fait de faire fonctionner votre programme en 32bits sur une machine disposant de 1Go de mémoire physique sous Win98 sans système de swap/mémoire virtuelle ou sur une machine 64bits disposant d'un système de swap de 3To ; devrait augmenter cet espace disponible par un facteur de plusieurs milliards.

    Je pense que si vous en êtes à vous posez ce genre de question, c'est qu'il y a un problème de conception ou d'expression du besoin bien en amont.

    Faites simple, vous considérez que cela marchera toujours et catchez l'exception d'allocation si vous disposez d'une solution de replie en cas de mémoire saturée.

    Mais la mise en place de cette solution de replie dans un environnement potentiellement sans mémoire est loin d'être triviale.

Discussions similaires

  1. [MVVM] Taille maximale d'une liste
    Par SIC83 dans le forum Silverlight
    Réponses: 8
    Dernier message: 12/06/2012, 09h47
  2. [SQL] Taille maximale liste SQL en SAS
    Par Jefbrel dans le forum SAS Base
    Réponses: 7
    Dernier message: 21/06/2011, 19h06
  3. [std::list][find_if] problème avec mes foncteurs
    Par n!co dans le forum SL & STL
    Réponses: 12
    Dernier message: 04/02/2005, 11h56
  4. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  5. Réponses: 9
    Dernier message: 29/07/2003, 14h41

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