Je me demande ce qu'il se passe lorsqu'une exception survient lors d'un vector<>.resize() par exemple.
Supposons que le vector soit vide au départ et qu'on fasse un resize(10). L'espace est alloué en mémoire pour 10 éléments en une fois, puis chaque élément est construit un à un. Si une exception survient dans le constructeur lors de l'instantiation du 5ème élément par exemple, le vector se trouve dans un état "instable" avec seulement la moitié de ses éléments construits. En réalité l'état du vector restera sera le même que celui avant le resize() avec comme résultat un memory leak.
En regardant différentes implémentations de vector, je ne vois pas rien empêchant ce memory leak. Ou alors quelque chose m'échapperait-il ?
Partager