4

假设我有一个名为的类,它维护由 Now 分配的vector一些内部动态类型数组,我构造了 a类型,然后想使用移动语义,以便我可以将它消耗的内存用于 a类型,如下所示:Tstd::allocator<T>.vectorUvectorT

vector<unsigned> u(512);
// Do something with v.
vector<double> t = std::move(u);
// Do something with t.
// Later, t gets destroyed.

ut' 移动构造函数中使用 ' 分配器分配的内存,然后使用t' 分配器释放它对我来说安全吗?如果是这样,我必须做些什么来确保这个操作是安全的?我猜我应该首先使用' 分配器调用' 内部数组allocator.destroy()的每个元素。uu

4

1 回答 1

2

是的,这是 STL 的目的设计之一,一个分配器分配的内存可以由另一个分配器释放。这是因为他们希望能够在容器之间交换元素(例如 with list::splice),而不必对其分配器做任何事情。这就是(原因之一)为什么你不能真正拥有有状态的分配器。

于 2012-01-12T04:59:29.367 回答