從cppref:
筆記
一個空的 shared_ptr(其中 use_count() == 0)可以存盤一個可由 get() 訪問的非空指標,例如,如果它是使用別名建構式創建的。
是否有可能shared_ptr::use_count() == 0和shared_ptr::get() != nullptr?
有什么例子可以說明這是真的嗎?
uj5u.com熱心網友回復:
如注釋中所述,別名建構式會導致這種情況發生。
例如:
#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";
}
列印 0的use_count()和b.get()非空。
請注意,float不受其生命周期管理,b并且會泄漏。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366703.html
上一篇:滑動擴展影片旁邊的專案
