xml*_*lmx 2 c++ multithreading lifetime shared-ptr c++11
来自cppref:
笔记
空的shared_ptr(其中use_count() == 0)可以存储可由get()访问的非空指针,例如,如果它是使用别名构造函数创建的。
有可能shared_ptr::use_count() == 0吗shared_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";
}
Run Code Online (Sandbox Code Playgroud)
打印 0and为非空use_count()。b.get()
请注意,float不是由 的生命周期管理的b,并且是泄漏的。