unique_ptr

2020-09-03  本文已影响0人  写一行代码

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;//释放堆区内存
}
上一篇下一篇

猜你喜欢

热点阅读