簡體   English   中英

如何取得std :: unique_ptr和std :: shared_ptr的所有權

[英]How to take ownership of std::unique_ptr and std::shared_ptr

這是一個后續的問題這個

我們如何獲得std :: unique_ptr或std :: shared_ptr的所有權?

有沒有辦法讓b保持生命?

class A{
  public:
   A() {
        b = std::unique_ptr<char[]>(new char[100] { 0 });
   }
 char* b;
}

void func {
   A a;
}

要獲得指針的所有權,請使用std::unique_ptr::release()

釋放托管對象的所有權(如果有)。

返回值 指向托管對象的指針;如果沒有托管對象,則指向nullptr ,即調用之前get()返回的值。


話雖這么說,但我不確定您為什么要執行b = std::unique_ptr<char[]>(new char[100] { 0 }).release(); 也許這是您想要的,即讓A本身存儲unique_ptr嗎?

class A {
    A() : b(new char[100] { 0 }) { }

private:
    std::unique_ptr<char[]> b;
}    

現在,只要銷毀一個A實例, Ab指向的內存就會被釋放。

暫無
暫無

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

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