std::vector не использует realloc. При изменении размера контейнера, требующего перераспределения памяти, происходит следующее:
T с корректной реализацией конструктора перемещения и/или оператора присваивания перемещением), используется перемещение. Это более эффективно, так как старые ресурсы (например, память, выделенная внутри объектов) передаются новым объектам, а старые объекты остаются в валидном, но неопределенном состоянии или очищаются деструкторами.T является POD-типом или имеет тривиальные операции копирования и перемещения), может использоваться memcpy или аналогичные низкоуровневые функции для быстрого копирования необработанных данных.Важно отметить, что указатели и ссылки на элементы в старой области памяти становятся недействительными после перераспределения.
c
Таким образом, происходит перемещение или копирование элементов в новую область памяти, а затем их деструкция в старой.