(disclaimer: I've not grep'd through the code to verify this, so it is a hunch)
I think the vector could be deleting a pointer twice. A vector is just a resizable array, and is allocated as a block. So if you copy the vector using memcpy you end up with an _exact_ copy of the vector, including the pointer. When next you do modify the vector, it may reallocate the array at a different spot, and in doing that it 'delete's the the memory at the previous pointer and allocates a new block. When the other vector tries to do anything to that pointer, it runs into memory problems.
Besides, the vector does define the '=' operator for copying vectors - no need to use memcpy. Even the default copy constructor uses '=' on all the members, so there shouldn't be a problem unless you're explicitly overriding it (which I don't know!)