Ca depend du cas comme pour tout, si par defaut ton vecteur a une taille allouee de 10 objets (parce que dans le cas usuel ou le vecteur contient quelque chose il en a 10), ton constructeur va faire une allocation a chaque fois par exemple.
Gni ? L'implémentation de std::vector n'est pas obligée de faire une préallocation si on ne donne pas de capacité initiale. Si le constructeur par défaut le fait quand même, c'est un problème de qualité d'implémentation de std::vector.
Si dans ton cas particulier le vector contient généralement 10 elements, rien ne t'empeche de faire un reserve(10) avant la premiere insertion, que le vecteur soit alloué dynamiquement ou non.
L'allocateur standard dans Windows a tout un tas de features pour eviter qu'un buffer overflow dans la heap ne se transforme en vulnerabilite (...), je ne connais a peu pres aucun allocateur 'custom' qui a ces features.
Un simple pool de char[sizeof bob] obtenues via l'allocateur est suffisant.
[^] # Re: works for me
Posté par shbrol . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 2.
Gni ? L'implémentation de std::vector n'est pas obligée de faire une préallocation si on ne donne pas de capacité initiale. Si le constructeur par défaut le fait quand même, c'est un problème de qualité d'implémentation de std::vector.
Si dans ton cas particulier le vector contient généralement 10 elements, rien ne t'empeche de faire un
reserve(10)avant la premiere insertion, que le vecteur soit alloué dynamiquement ou non.Un simple pool de char[sizeof bob] obtenues via l'allocateur est suffisant.