4
假设我有一个叫vector
类维护由std::allocator<T>.
现在分配T
型的一些内部,动态数组,我构建U
类型的vector
,后来又希望使用移动语义,这样我可以使用由它占用的内存为T
型vector
,像这样:使用内存
vector<unsigned> u(512);
// Do something with v.
vector<double> t = std::move(u);
// Do something with t.
// Later, t gets destroyed.
是否安全对我来说,使用由u
的分配器在t
的移动构造函数分配的内存,然后再使用释放它t
的分配器?如果是这样,我需要做些什么来确保这个操作是安全的?我猜我应该首先使用u
的分配器为u
的内部数组的每个元素调用allocator.destroy()
。
C++ 11允许有状态的分配器。你只需要定义一些额外的功能IIRC。 – Xeo 2012-01-12 05:22:09
@Xeo C++ 11再次救援。你能提供一个关于如何做到这一点的链接?我一定想知道。 – 2012-01-12 05:24:59