可能重复:
Why is it wrong to use std::auto_ptr<> with standard containers?
我有一个函数在指针中返回一些Object,所以我使用:
vector <auto_ptr <Object> > func() { ... }
我想知道它是否安全?
答案 0 :(得分:0)
stl喜欢复制元素并在其算法中使用临时副本(例如,它们必须是“可复制构造”和“可分配”)。虽然auto_ptr
不是这样。将一个auto_ptr
分配给另一个转移指针的所有权。
auto_ptr<foo> A = B;
B变为NULL
,A是指针的新所有者,B无法使用。当临时对象获得所有权时,它不会返回它,而是你有一个悬空指针或NULL
指针的向量。
您可以使用c ++ 11智能指针,或者提升智能指针或自行实现。