一、相关问题
我们知道,浅拷贝会引发重复释放,导致程序崩溃。而深拷贝虽不会出现上述问题,但是内存空间开销大。所以,有没有一种方法,
既节省空间,又不会造成程序崩溃呢?
二、写时拷贝技术
写时拷贝(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] = '