智能指针注意事项

Posted 青蛙~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能指针注意事项相关的知识,希望对你有一定的参考价值。

1:一个裸得指针不要使用两个shared_ptr unique_ptr
2:用weak_ptr打破循环引用
3:当需要在类得内部接口中,需要将this作为智能指针使用,需要用该类派生自enable_shared_from_this
4:使用share_ptr作为函数接口时候,最好用 const share_ptr&
5:share_ptr weak_ptr和裸指针比,会大很多,效率有问题,特别在多线程下
6:enable_shared_from_this 和析构函数一样,在析构函数构造函数最好别用
7:某些时候会出现内存不释放问题,有可能是使用了weak_ptr来解决循环问题导致得,因为有可能指向得资源已经无效了,但是我weak_ptr还在使用导致释放不了
8:如果有可能优先使用类得实例,万不得已在使用unique_ptr 在退一步在使用 share_ptr
9:裸指针和智能指针之间强转也会有问题
10:智能指针share_ptr 有跨dll内存释放问题,最好用原始指针
11:智能指针使用多态时候很容易哑指针
sptr = make_shared(b) 等价于 A*p1 =new (b)
p1和make_shared的返回值不会指向b
12:前置声明会导致编译错误 主要原因是智能指针会为我们增加默认析构函数导致得

以上是关于智能指针注意事项的主要内容,如果未能解决你的问题,请参考以下文章

[C++11]shared_ptr共享智能指针的初始化与使用

GotW #89智能指针的一些建议

[C++11]shared_ptr使用的注意事项(内存被重复析构,内存泄漏问题)

工程实践:到底要不要使用智能指针

工程实践:到底要不要使用智能指针

智能指针