C++智能指针(1)
裸指针时产生的种种问题。具体而言,有下面几种:
1.从声明中无法看出指向的是对象还是数组,也无法看出是否需要析构它。
2.不知道如何析构它。是delete呢还是单独放在一个专门的函数里。
3.在代码执行路径上保证裸指针指向的动态对象上只析构一次困难重重。在层层路径下,未执行析构(提前return,异常等)会造成资源泄漏。执行了两次析构,那么第二次析构时会产生未定义行为。
4.如果某些对象析构了,仍然有指针指向它,会造成空悬指针(Hungle)。然而没有有效的方法检测指针是否空悬。
c++11新引入的智能指针(shared_ptr,unique_ptr,weak_ptr)使用起来很像是裸指针,但却能避免裸指针身上的那些问题。
|
作者:逆向人 公众号:逆向人 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 |

浙公网安备 33010602011771号