Taille maximale d'une liste en mémoire (std::list de la STL) - C++ - Programmation
Marsh Posté le 08-02-2008 à 12:08:33
kason a écrit : Je voudrais connaître la taille maximale d'une liste créée à partir de la STL. |
list::max_size()
Marsh Posté le 08-02-2008 à 14:06:32
capitaineigloo a écrit : |
En fait, je voudrais justement avoir plus de précision sur la valeur que retourne la méthode max_size()
Marsh Posté le 08-02-2008 à 14:29:53
toutes façons cette valeur ne sert à rien. C'est quoi ta véritable question ? La taille maximale n'est pas fixe de toutes façons.
Marsh Posté le 08-02-2008 à 15:44:50
Taz a écrit : toutes façons cette valeur ne sert à rien. C'est quoi ta véritable question ? La taille maximale n'est pas fixe de toutes façons. |
En fait, j'ai un souci lors de l'ajout d'un élément dans une liste. Je voudrais savoir s'il est possible de saturer facilement une std::list. Si la taille maximale n'est pas fixe, quel est son ordre de grandeur ? x fois la taille de l'objet stocké dans la liste ? La version de la librairie est-elle impactée ?
J'ai déjà utilisé std::list et je n'ai jamais eu des problèmes d'ajout d'élément auparavant.
Voilà le contexte du problème : dessiner une carte qui contient 4000 vecteurs. Lors du chargement de la carte en mémoire, les points des vecteurs sont stockés dans une liste (on a qqch comme std::list<PointGeo> ). L'exécutable plante et génère un core durant l'ajout d'un élément dans la liste. Avec 1000 vecteurs, la carte se dessine normalement.
Il est à noter que le plantage a lieu non sur un push_back mais sur l'allocation d'un nouvel objet de type PointGeo...
Marsh Posté le 08-02-2008 à 20:30:36
Mouarf, une classe de liste même pas foutue de gérer 4000 pauvres éléments, c'est soit qu'elle a été conçue avec les pieds d'un cul-de-jatte, soit que l'erreur vient de ton coté. Venant de la STL, je me pencherais d'abord sur ton code (au hasard buffer overflow, d'autant plus que ça foire au moment de l'allocation : symptômes typiques d'une écriture dans un espace non réservé).
Marsh Posté le 09-02-2008 à 16:52:28
Tant que tu ne ramasses pas de std::bad_alloc, c'est que ce n'est pas un problème de capacité mémoire.
Marsh Posté le 11-02-2008 à 16:57:50
OK, mais il y a qqch qui me tracasse:
En termes de capacité, on ne devrait pas avoir la même capacité max pour des listes dans lesquelles on stocke des entiers et pour celles dans lesquelles on stocke des objets (classe avec pas mal d'attributs) ?
Marsh Posté le 11-02-2008 à 17:02:57
ca n'a aucun rapport. Les listes utilisent l'allocation dynamique pour leur contenu. on est pas en PASCAL
Marsh Posté le 12-02-2008 à 16:58:03
Joel F a écrit : ca n'a aucun rapport. Les listes utilisent l'allocation dynamique pour leur contenu. on est pas en PASCAL |
OK, je vois
Marsh Posté le 08-02-2008 à 12:00:28
Je voudrais connaître la taille maximale d'une liste créée à partir de la STL.
Est-elle fixe ?
Peut-on modifier la taille max à volonté ou existe-t-il une valeur seuil critique ?
Dépend-elle d'une version de la STL (s'il existe plusieurs versions...) ?
Dépend-elle du type d'élément que l'on stocke dans la liste (integer, float, string, objet lamda...) ?
Comment est-elle calculée ?
Que fait exactement resize ?