Данные для векторов всегда распределяются динамически. В стеке хранятся только бухгалтерские данные. Даже если бы это было не так, выделение стековой памяти практически бесплатно. Отмена выделения из стека - это просто изменение значения регистра в большинстве архитектур.
EDIT
Что касается динамического освобождения, его нужно будет освободить в той или иной точке (особенно в конце функции). Вы на самом деле ничего не теряете, оставляя выделенную память до тех пор, пока не захотите выделять больше, а этого недостаточно. Точное время, когда происходит такое освобождение, должно вызывать беспокойство, прежде чем вы действительно столкнетесь с какой-то проблемой?
/ EDIT
Но какой в этом смысл? Похоже, вы преждевременно относитесь к оптимизации.
Если вы хотите провести рефакторинг своего кода, делайте это ради ясности, а не производительности.