in the write method I wanna copy a block of data pointed by pData into the vector and I've thought that std::copy was the best choice.
Running the code with this values:
You should resize the vector in Allocate or use an inserter in the copy in Write. since you know how much space you need and you know you're going to use it all, you may as well do the former.
reserve allocates enough memory to hold the specified number of elements, but does not change the number of elements actually in the vector. resize changes the number of elements actually in the vector to match the value specified. This may require reallocating a larger buffer.
So to do what you want to do, you will need to call resize() instead of reserve().