神奇的相位鞋 2022-05-26 12:27 采纳率: 66.7%
浏览 21

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

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

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

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

  • 写回答

1条回答 默认 最新

  • 关注

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

    评论

报告相同问题?

问题事件

  • 修改了问题 5月26日
  • 创建了问题 5月26日