Quand std::vector
est pleine, une nouvelle mémoire est allouée. D'après ce que j'ai lu, la nouvelle capacité croît selon une progression géométrique (mais cela n'a rien à voir avec la question), puis les anciennes informations sont copiées dans la nouvelle région de mémoire, et l'ancienne est libérée.
Sur la base de cette hypothèse, mes questions sont les suivantes :
-
Pourquoi les compilateurs n'essaient-ils pas de voir s'il y a suffisamment de mémoire libre contiguë à la fin de notre fichier
std::vector
d'en allouer une partie à la fin de notre année de travail.std::vector
et ne perdez pas de temps à copier ? -
Est-ce que des gens ont essayé d'implémenter cela, mais il a été décidé que cela ne valait pas la peine de le faire ? (en moyenne/toujours)
-
Y a-t-il d'autres raisons, plus subtiles, pour lesquelles cela ne se produit pas ?