我一直在为我std::vector的unique_ptrs 做这个:
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当它从向量中删除时,它是deleted?当然,如果将指针thingy复制或存储在其他地方,则可能会出现悬空指针,但这是一个不同的问题。