C++旧内存被接管后(移动构造函数)为什么还能执行析构?

void strvec::reallocate()
{
.....
static allocator<string> alloc;
.....

alloc.construct(dest++, std::move(*elem++));
free();
.....
}

move()返回,动用string移动构造函数之后,新string接管旧string内存后,为什么free()旧string可以成功,旧string的元素和内存不是已经不存在了么?

move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。
只是将数据移过去了,内存并没有没释放