这是GNU Make的后续问题。
我们如何取得std :: unique_ptr或std :: shared_ptr的所有权?
有没有办法让class A{
public:
A() {
b = std::unique_ptr<char[]>(new char[100] { 0 });
}
char* b;
}
void func {
A a;
}
保持活力?
apt-get install linux-headers
ln -s /usr/src/linux-headers-2.6.32-5-amd64/ /lib/modules/2.6.32-5-amd64/build
答案 0 :(得分:5)
要获取指针的所有权,请使用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
实例被破坏时,A.b
指向的内存将被释放。