繁体   English   中英

使用由不同分配器分配的内存

[英]Using Memory Allocated by Different Allocator

假设我有一个称为vector的类,该类维护由std::allocator<T>.分配的一些内部类型T动态数组std::allocator<T>. 现在,我构造一个类型为Uvector ,后来想使用移动语义,以便可以将其消耗的内存用于类型为Tvector ,如下所示:

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

对我来说,在t的move构造函数中使用u的分配器分配的内存,然后再使用t的分配器对其进行释放,是否安全? 如果是这样,我该怎么做才能确保此操作安全? 我猜想我应该首先使用u的分配器为u内部数组的每个元素调用allocator.destroy()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM