unique_ptr

unique_ptr所指的内存为自己独有,只能有一个unique_ptr指向一个指定的对象。不支持拷贝和赋值.

测试程序

  void test()
{
    unique_ptr<int> up1(new int(11));
    cout << *up1 << endl;
    std::unique_ptr<int> up3 = std::move(up1);//转移对象的所有权,转移之后,up1不再持有此内存
                                              //up3将获得对象的所有权
    cout << (up1==nullptr) << endl;//up1为空指针
    cout << *up3 << endl;
    up3.reset();//手动释放内存
    up1.reset();//不会报错
    std::cout << (up3 == nullptr) << endl;//up3为空指针

    std::unique_ptr<int> up4(new int(22));
    up4.reset(new int(44));//绑定对象
    std::cout << *up4 << endl;

    up4 = nullptr;//手动释放内存,与reset等价

    unique_ptr<int> up5(new int(55));
    int* p = up5.release();//释放对象所有权,内存没有释放
    cout << *p << endl;
    cout << (up5 == nullptr) << endl;//up5为空指针
    delete p;//释放堆区内存
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。