【发布时间】:2012-02-08 10:59:30
【问题描述】:
假设我有一个名为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.
在t 的移动构造函数中使用u 的分配器分配的内存,然后使用t 的分配器释放它是否安全?如果是这样,我必须做些什么来确保这个操作是安全的?我猜我应该首先使用u 的分配器为u 的内部数组的每个元素调用allocator.destroy()。
【问题讨论】:
标签: c++ memory-management allocator