C++ 共享指针 shared_ptr

shared_ptr

    由于C++不像java一样有自动回收内存机制,new对象后,都要手动的delete掉,当程序员忘记delete的时候,可能会发生访问内存异常错误。shared_ptr是为了解决这类问题而提出的,它是一种共享指针,虽然没有了delete,但是shared_ptr的构造还需要new调用,这导致了代码中的某种不对称性。虽然shared_ptr很好地包装了new表达式,但过多的显式new操作符也是个问题,它应该使用工厂模式来解决。因此,shared_ptr在头文件 中提供了一个自由工厂函数(位于boost名字空间)make_shared(),来消除显式的new调用,它的名字模仿了标准库的 make_pair(),声明如下:

shared_ptr make_shared( Args && ... args );

    make_shared()函数可以接受最多10个参数,然后把它们传递给类型T的构造函数,创建一个shared_ptr的对象并返回。make_shared()函数要比直接创建shared_ptr对象的方式快且高效,因为它内部仅分配一次内存,消除了shared_ptr 构造时的开销。
#include   
int main()   
{   
    shared_ptr<string> sp =   
                make_shared<string>("make_shared");
//创建string的共享指针   
    shared_ptr<vector<int> > spv =   
                make_shared<vector<int> >(10, 2);      
//创建vector的共享指针   
    assert(spv->size() == 10);   

}  

你可能感兴趣的:(C++)