[英]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.