gpt4 book ai didi

c++ - `shared_ptr::use_count() == 0` 和 `shared_ptr::get() != nullptr` 有可能吗?

转载 作者:行者123 更新时间:2023-12-05 09:29:59 25 4
gpt4 key购买 nike

来自cppref :

Notes

An empty shared_ptr (where use_count() == 0) may store anon-null pointer accessible by get(), e.g. if it were created usingthe aliasing constructor.

是否有可能 shared_ptr::use_count() == 0shared_ptr::get() != nullptr

有什么例子可以证明这是真的吗?

最佳答案

如注释中所述,别名构造函数会导致这种情况发生。

例如:

#include <memory>
#include <iostream>

int main()
{
std::shared_ptr<int> a = nullptr;
std::shared_ptr<float> b(a, new float(0.0));
std::cout << b.use_count() << "\n";
std::cout << (b.get() == nullptr) << "\n";
}

prints use_count()b.get()0 是非空的。

请注意,float 不受 b 的生命周期管理,并且已泄漏。

关于c++ - `shared_ptr::use_count() == 0` 和 `shared_ptr::get() != nullptr` 有可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70115272/

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