gpt4 book ai didi

c++ - 使用普通指针的内存处理 C++

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:42 25 4
gpt4 key购买 nike

我遇到如下情况,在释放内存时遇到了一些问题。基本上我有一个 vector ,它包含指向 classA 中的对象的指针。我有另一个 classB 存储 vector 中 classA 的指针。它会使用 objB。问题是我需要对 vector 进行操作以删除指针。

那么我怎样才能像下面的描述那样释放 objA 的内存呢?

  1. 按值传递 objA 并在 objB 中复制一份?

  2. 在objB的析构函数中删除指向objA的指针? (我也不想这样做,因为只有当逻辑完成时,我才需要删除指针并删除对象。否则,我想保留对象。

    vectorA vt;....将多个指向对象的指针存储到 vector 中

    classB* objB = new classB(vt.at(pos));

    执行了一些逻辑。如果满足,需要从 vector 中删除一个特定的对象。

    vt.erase(pos); ==> 如果我在这里删除了指针,如何释放内存?我不能在这里调用 delete,因为 objB 稍后可能需要使用 objA。

    B类::B类(A类* objA){ 这个->objA = objA;

所以有什么方法可以像上面的情况一样使用普通指针释放内存?由于一些回复指示我使用智能指针,我的问题是使用智能指针对性能有任何影响吗? (比如 C# 不确定的垃圾收集器对于性能关键应用程序来说并不是真正的理想选择)。

最佳答案

至少,听起来您正在寻找 shared_ptr

关于c++ - 使用普通指针的内存处理 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832090/

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