引用计数+copy on write

来源:互联网 发布:淘宝砍价师是真是假 编辑:程序博客网 时间:2024/05/16 11:30

拷贝通常分为值拷贝也叫浅拷贝和深拷贝,当拷贝方式为浅拷贝时就会有以下两个问题:
(1)当需要调析构函数时,会出现同一块空间被析构两次的情况
(2)如果是对指针的浅拷贝,会让两个指针同时管理同一块空间,当一个指针对这块空间进行修改时,会影响到另外一个指针。
通过引用计数加写时拷贝可以有效地解决这些问题。
引用计数即在创建空间时多开辟出一块空间存放当前空间被引用的次数。写时拷贝即当多个指针同时指向一块空间时,如果没有对这块空间的内容进行修改,就只进行浅拷贝,当指针需要对空间进行修改时,才会进行创建空间,拷贝数据,要注意引用计数的改变。
String类写时拷贝的两种方案:
(1)开辟两块空间,一块放内容,一块放引用计数

(2)开辟一块空间,在最开始放引用计数,后边放内容。

原创粉丝点击