2.由深拷贝和浅拷贝引发的写时拷贝技术

一、相关问题

  我们知道,浅拷贝会引发重复释放,导致程序崩溃。而深拷贝虽不会出现上述问题,但是内存空间开销大。所以,有没有一种方法,

  既节省空间,又不会造成程序崩溃呢?

二、写时拷贝技术

  写时拷贝(Copy-on-write):如果有多个呼叫者同时要求相同资源,他们会共同取得相同的指标指向相同的资源,直到某个呼叫者

                                          尝试修改时,才会复制一个副本给该呼叫者。

三、例子

  实现string类,在string中添加引用计数器类成员 

class String;
//引用计数器类
class String_rep
{
    friend class String;
    friend ostream& operator<<(ostream& out, String const& s);
public:
    String_rep(const char* str = "")
        : m_UseCount(0){
        if(NULL == str){
            m_data = new char[1];
            m_data[0] = '