我有一个std::vector
of unique_ptr
s,我很高兴让他们管理这些对象的生命周期。
但是,为了方便起见,我需要存储指向这些对象的其他指针。我知道一旦unique_ptr
删除了某些东西,那些其他指针就会悬空。但我更关心这些指针在unique_ptr
获取它们之前和之后的有效性。
我并不总是new
在unique_ptr
自身内部创建 via,例如,我可能会new Something
作为函数参数传递,在这种情况下,在函数内部unique_ptr
使用move
该指针到自身。
但我也可能new Something
在将它传递给一个函数之前给它分配一个unique_ptr
.
一旦将对象分配给 aunique_ptr
我可以通过get()
. 但是,如果原始指针是在分配给 a 之前创建的,我是否可以始终假设该get()
指针指向与最初通过 via 获得的指针相同的位置?new
unique_ptr
我的假设是肯定的,即使vector
调整大小和重新分配,unique_ptr
以及指向内存中对象的任何其他指针都保持不变。