【发布时间】:2012-02-07 15:16:02
【问题描述】:
我用的是visual studio 2010,它的stl实现来自dinkumware
我注意到当向量的内部缓冲区增长时,会调用 _Uninitialized_move。这很像 std::uninitialized_copy。
- 对于标量类型,它最终将调用转发到 memmove
- 对于非标量类型,它将调用包含类型的复制构造函数。
我知道对于非标量类型,按位处理是不安全的,但在这种情况下我会感到困惑,因为旧对象很快就会被销毁。看起来所有类型的按位处理都是安全的,因此我们只需要在 _Uninitialized_move 之后释放原始缓冲区。这将为非平凡对象节省大量复制构造函数和析构函数。
那么,只移动非标量类型的内容是否安全?
【问题讨论】:
标签: c++ algorithm memory memory-management stl