一. weak_ptr智能指针的大小是裸指针的2倍.原因是智能指针内部有两个指针,指针一指向对象,指针二指向控制块,其中控制块中存放:
1.强引用计数
2弱引用计数
3其他数据(自定义删除器);
这个控制块是由shared_prt创建的
二.unique_ptr
unique_ptr的realse:
返回裸指针,放弃对指针的控制,将智能指针置空。
unique_ptr的reset:
1.reset():释放指针指针所指的对象,并将智能指针置空;
2.reset(带参数):释放智能指针所指的对象,并让该智能指针指向新的对象;
注意:
unique_ptr<A[]>ptr(new A[10]); //如果类A中有自己的析构函数,需要加上unique_ptr<A[]>,否则会有报错;
unique_ptr转成shared_ptr:
1.如果unique_ptr是一个右值,可以用shared_ptr来接