2010-03-05 6 views

Répondre

19

Le vecteur est alloué sur la pile (28 octets sur mon système). Les contenus vectoriels sont alloués sur le tas.

3

Pour développer la réponse de Yacoby, RAII signifie que lorsque vi est hors de portée, tout alloué avec new (à l'intérieur du vecteur) est delete d (dans le destructor du vecteur). C'est ainsi que vous mélangez l'allocation de pile et de tas.

5

Vous pouvez modifier la façon dont la mémoire est allouée aux conteneurs STL avec la combinaison du type de modèle Allocator et de l'objet allocateur transmis au constructeur.

J'ai posé une question sur la façon de faire un stockage de pile d'utilisation de vecteur et obtenu this answer. Vous pourriez trouver cela intéressant.

+0

+1 Très intéressant ... – Skilldrick

+0

Défini +1 par moi. – Yacoby

3

Le vector est affecté à chaque fois que le allocator utilise l'allocation. Dans le cas par défaut de std::allocator, il utilise ::operator new().

Questions connexes