Pno*_*tNP 1 c++ memory-management shared-ptr unique-ptr c++11
这是一个后续的问题这个.
我们如何获得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;
}
Run Code Online (Sandbox Code Playgroud)
要获取指针的所有权,请使用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;
}
Run Code Online (Sandbox Code Playgroud)
现在,每当一个A实例被破坏时,指向的内存A.b将被释放.
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |