zoukankan      html  css  js  c++  java
  • 【Boost】系列02:内存管理之scoped_ptr智能指针

    智能指针,stl中有auto_ptr,boost的smart_ptr库有6种:

    scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr和intrusive_ptr.

    scoped_ptr的拷贝构造函数和赋值操作符声明为私有,以禁止对智能指针的复制。

    例1:

    #include <boost/smart_ptr.hpp>
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace boost;
    
    int main()
    {
        scoped_ptr<string> sps(new string("Hello Boost"));
        cout<<sps->size()<<endl;    
        cout<<*sps<<endl;
        return 0;
    }

    输出

    11

    Hello Boost

    例2:

    #include <boost/smart_ptr.hpp>
    #include <iostream>
    #include <string>
    using namespace std;
    using namespace boost;
    struct tag_file
    {
        tag_file(const char *file_name)
        {
            cout<<"open file:"<<file_name<<endl;
        }
        ~tag_file()
        {
            cout<<"close file"<<endl;
        }
    
    };
    int main()
    {
        scoped_ptr<int> spi(new int);
        if (spi)  //用bool语境测试
        {
            *spi = 100;
            cout<<*spi<<endl;
        }
        spi.reset();
        assert(spi == 0);
        if (!spi)
        {
            cout<<"scoped_ptr == null"<<endl;
        }
        scoped_ptr<tag_file> spf(new tag_file("a.txt"));
        
        return 0;
    }

    输出

    100

    scoped_ptr == null

    open file:a.txt

    close file

  • 相关阅读:
    vmalloc详解
    SSD 页、块、垃圾回收
    ext2文件系统
    slub分配object
    slab分配object
    ACCESS_ONCE的作用
    CFS理论模型
    代码规范
    About Me
    SDOI R2 咕咕记
  • 原文地址:https://www.cnblogs.com/elesos/p/2756291.html
Copyright © 2011-2022 走看看