C++智能指针(1)

裸指针时产生的种种问题。具体而言,有下面几种:

1.从声明中无法看出指向的是对象还是数组,也无法看出是否需要析构它。

2.不知道如何析构它。是delete呢还是单独放在一个专门的函数里。

3.在代码执行路径上保证裸指针指向的动态对象上只析构一次困难重重。在层层路径下,未执行析构(提前return,异常等)会造成资源泄漏。执行了两次析构,那么第二次析构时会产生未定义行为。

4.如果某些对象析构了,仍然有指针指向它,会造成空悬指针(Hungle)。然而没有有效的方法检测指针是否空悬。

c++11新引入的智能指针(shared_ptr,unique_ptr,weak_ptr)使用起来很像是裸指针,但却能避免裸指针身上的那些问题。

posted @ 2019-09-24 14:41  逆向人  阅读(208)  评论(0)    收藏  举报