簡體   English   中英

將 shared_ptr 分配給 weak_ptr

[英]Assigning shared_ptr to weak_ptr

我想將構造的 shared_ptr 分配給weak_ptr:

std::weak_ptr<void> rw  = std::shared_ptr<void>(operator new(60), [](void *pi) { operator delete(pi); });

但是,當我執行rw.expired() ,它顯示 expired 意味着它是空的。 我哪里出錯了有什么建議嗎?

提前致謝。

std::shared_ptr目的是在指向它的最后一個共享指針被銷毀或重新分配給其他地方時釋放托管對象。 您創建了一個臨時共享 ptr,將其分配給std::weak_ptr ,然后在表達式結束時將其銷毀。 你需要讓它保持活力:

auto shared = std::shared_ptr<void>(operator new(60), [](void *pi) { operator delete(pi); });
std::weak_ptr<void> rw  = shared;

現在rw至少在shared還活着時不會過期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM