我一直在为我std::vector
的unique_ptr
s 做这个:
m_stuff.push_back(std::unique_ptr<Thing> (new DerivedThing()));
这使我可以在删除向量中的元素时自动删除内存。
我有另一种情况,其他东西通过创建堆内存new
,因此已经存在通用指针。现在,假设我这样做:
m_stuff.push_back(std::unique_ptr<Thing> (thingy));
//thingy is Thing*
我可以安全地假设,一旦我这样做,我的向量m_stuff
现在可以控制thingy
当它从向量中删除时,它是delete
d?当然,如果将指针thingy
复制或存储在其他地方,则可能会出现悬空指针,但这是一个不同的问题。