Алгоритм автоматической аллокации памяти при использовании вектора в C++ работает через использование аллокатора — класса, который отвечает за выделение и освобождение памяти. 13
Когда память, выделенная аллокатором, заканчивается, вектор запрашивает у него новый участок памяти, который смог бы разместить все элементы, уже содержащиеся в векторе, а также новые. 1 Для этого повторно выделяется память из «кучи». 1
Чтобы уменьшить количество повторных обращений к аллокатору, вектор запрашивает память «про запас». 1 Например, когда память оказывается исчерпана, вектор запрашивает на 50% больше памяти, чем у него было. 1
При перераспределении памяти, в общем случае, вызываются копирующие конструкторы элементов вектора, так как из «старой» памяти их нужно корректно перенести в новую выделенную область. 1 А вслед за конструкторами вызываются деструкторы элементов, так как из «старой» памяти их нужно правильно удалить. 1
Когда вектор выходит из области видимости, вызывается его деструктор, что автоматически освобождает используемую им память. 4