En general, no necesariamente. Cuando asigna un vector al otro, la condición de publicación es que ambas matrices contendrán objetos equivalentes al final de la operación.
Si el capacity
del vector destino es suficiente, la operación se puede lograr mediante una llamada al operador asignación en el set de min(v1.size(), v2.size())
elementos, y luego o bien destruyendo el resto de los elementos si el vector de destino llevó a cabo más elementos, o bien copia-construcción los elementos adicionales al final. En este caso, no se realizará ninguna publicación o asignación de memoria.
Si el vector de destino no tiene suficiente capacidad, creará un nuevo búfer con suficiente capacidad y copy-construc elementos en el nuevo búfer del vector de origen. Luego intercambiará los búferes antiguos y nuevos, destruirá todos los objetos antiguos y liberará el búfer antiguo. En este caso, los objetos antiguos son destruidos y se libera la memoria anterior, pero este es solo un caso.
Sí, se libera. – tuxuday