gpt4 book ai didi

c++ - 指向 std::vector 的指针

转载 作者:行者123 更新时间:2023-11-28 03:21:13 26 4
gpt4 key购买 nike

这就是我遇到的问题。

我有一个指向 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com