gpt4 book ai didi

c++ - 更智能的智能指针

转载 作者:行者123 更新时间:2023-11-30 02:32:02 25 4
gpt4 key购买 nike

我认为像 std::shared_ptr 这样的指针在它自己之后清理的概念很酷,但我想知道是否有更好的第三方智能指针。

shared_ptr 的问题在于递归引用。当您有这样的事情时,就会发生这种情况:

class A{
public:
std::shared_ptr<A> other;

A() { }
};

//Later
std::shared_ptr<A> a = std::make_shared<A>();
std::shared_ptr<A> b = std::make_shared<A>();
a->other = b; //Memory leak
b->other = a; //Memory leak

是否有更智能的智能指针可以感知我何时应该使用弱指针并且不会泄漏(或至少发出警告)? (经过简短的谷歌搜索后,我找不到任何东西)

最佳答案

这里应该使用弱指针。

事实上,std::shared_ptr 实现了基本的引用计数,仅此而已,这不是最近才发现的。 C++ 不是托管语言,没有自动垃圾收集功能。因此,通过 std::shared_ptr 的循环引用是有问题的。解决方案是弱指针。

关于c++ - 更智能的智能指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36902813/

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