string类的引用计数的写时拷贝分析
来源:互联网 发布:linq 不重复数据 编辑:程序博客网 时间:2024/05/19 20:43
写时拷贝(copy-on-write)
使用了引用计数的复制方法,在复制的时候会有一个变量来保存引用的次数,类似于:
假设A要管理S1这块空间,然后B也想要管理使用S1,写时拷贝不需要把S1复制一份再让B去管理修改,而是将B的指针指向S1这块空间,则S1就被A和B同时管理使用,减少了系统开支,提升了系统性能。
但是在程序结束调用析构函数进行释放空间的时候就会产生问题,按照构造函数与析构函数成对出现的原则,有多少次构造就会析构多少次,A和B分别构造,就会有相应的析构,但是A与B指向同一块空间,而同一块空间不可以被析构多次,这里就会产生问题,而引用计数的写时拷贝就可以解决这个问题。
解决方法:
当指向S1这块空间的指针只剩下1个或者0个时,析构函数被调用进行释放,这时候才是真正的Free这块空间,而当管理S1这块空间的指针增加时,计数就加一。
class String{ public: String(const char*str)//构造函数 :_str(new char[strlen(str)+1]) ,_refCount(1) {} String(String&s)//s2(s1) { _str=s._str; _rerCount=s._refCount; ++refCount; } ~String()//析构函数 { if(--_refCount==0) { delete[]_str; } } private: char*_str; int _refCount;}
阅读全文
0 0
- string类的引用计数的写时拷贝分析
- String-引用计数的写时拷贝
- string引用计数的写时拷贝
- string类的写时拷贝与引用计数
- String类引用计数的写时拷贝
- string类的写时拷贝与引用计数
- String类的浅拷贝、深拷贝、引用计数、写时拷贝
- (String)引用计数写的拷贝
- 小结 | C++ String类的引用计数的浅拷贝、写时拷贝
- String类引用计数的浅拷贝
- 引用计数的写时拷贝
- 引用计数的写时拷贝
- 引用计数的写时拷贝
- String--引用计数写时拷贝
- String类---深拷贝,简洁深拷贝,引用计数拷贝,写时拷贝
- PHP中引用的详解(引用计数、写时拷贝)
- PHP中引用的详解(引用计数、写时拷贝)
- PHP中引用的详解(引用计数、写时拷贝)
- 算法笔记:动态规划背包问题(未完待续)
- 移动平台 Unity3D 应用性能优化
- oracle11g数据库中的json工具
- 测试信息
- Python 错误和异常
- string类的引用计数的写时拷贝分析
- BZOJ2982: combination(Lucas定理)
- [Suzuki85]轮廓跟踪算法论文翻译
- 老蜗牛写采集:获取数据(正则篇)
- jdk1.7环境java代码访问https(connection reset)
- 如何判定对象已死可以回收内存
- book1 unit5 after-class reading 1 : Animal Play
- windows下超简单安装Anaconda配置环境,并在pycharm中运行安装TensorFlow
- 【笔记篇】莫队算法(二)