这就是我遇到的问题。
我有一个指向 std::vector 的指针。所以在我初始化指针之后,我没有向 vector 添加任何项目,也没有删除任何项目。然而,在我的代码中的某个点,我的 std::vector 移动了位置,我最终得到了一个悬空指针。这似乎是随机发生的,即使我在制作指针后从未接触过 vector
我调试了一段时间才弄清楚这个问题。有没有办法保证我的 std::vector 不会改变内存位置?或者有一个指向 vector 的指针只是一个坏主意。
最佳答案
Or is it just a bad idea to have a pointer to a vector?
一般来说,我会说用原始指针来控制对象的生命周期是个坏主意。不要使用原始指针和自动内存管理,尝试使用具有适当所有权语义的智能指针( std::shared_ptr<>
或 std::unique_ptr<>
)。仅将原始指针用于观察指针(如果您希望能够在运行时验证它们是否悬空,请使用 weak_ptr<>
)。
此外,在许多情况下,您可能会意识到根本不需要指针。在这种情况下,只需使用具有自动存储的对象,由于移动语义,它可以在 C++11 中高效地移动或按值传递/返回。
关于c++ - 指向 std::vector 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369504/