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.
Version imprimable
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.
Probablement, et cela doit �tre fonction de l'impl�mentation de la STL, du syst�me h�te et de l'environnement au Runtime.
ok mais y pas une foction que peux me determiner �a ?
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.
mais en fait le max_size() �a d�finit mex nombre d'�l�ment pas la taille en m�moire la liste :(
Je ne comprends pas trop votre probl�me. :oops:
Dans la Doc :http://www.cplusplus.com/reference/stl/list/push_back/
Le comportement de gestion m�moire de la STL:list est pilot� par le param�tre "Allocator" du template std:list.Citation:
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).
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.