Mmmm bueno, hay un detalle, te explico, cuando reservas memoria con malloc, esa memoria se conserva hasta que hagas free, o sea que tus datos no se pierden, pero existe un detalle, cuando tu defines espacio en memoria para un vector, y si despues quisieras hacer mas grande el vector, no se puede, porque te asigna la cantidad de manera continua, entonces, si tu definieras 2 vectores de 10 elementos con malloc, no podrias hacer mas grande el primero porque inmediatamente despues se encuentra el segundo vector, y encimarias esa memoria.La solucion seria implementar el vector por medio de listas enlazadas, en una lista enlazada, los elementos no tienen porque estar de manera continua, pueden estar separados, ya que cada elemento contiene un campo extra apuntador que valga la redundancia "apunta" a la direccion de memoria en donde se encuentra el siguiente elemento.Tambien podrias crear un vector con mas elementos, copiar los elementos del primer vector al segundo vector, y liberar el primer vector, pero si son muchos datos, no seria muy eficiente, asi que lo mejor es usar listas enlazadas o doblemente enlazadas.