c++在堆上分配的記憶體需要分配者自己釋放,但是有時分配者由於某種情況忘記釋放,此時會造成記憶體洩漏,因此實現了乙個簡單的智慧型指標。
// 引用計數類,負責管理動態分配的記憶體的使用者數量
class reference
~reference(){}
// 自增
int add()
// 自減
int release()
private:
int m_count;
};
// 動態分配的記憶體包裝模板類,負責對動態分配的記憶體進行操作
templateclass smartp
private:
mutable t *m_tp;
};templatesmartp::smartp(t *p)
templatesmartp::smartp(smartp &p)
templatesmartp::~smartp() }}
templatesmartp&smartp::operator =(smartp &p)
if (m_tp) }
m_tp = p.get();
m_tp->add();
return *this;
}templatet *smartp::operator ->()
測試程式:
class test : public reference
~test()
char *ch;
};int _tmain(int argc, _tchar* argv)
} return 0;
}
c 實現簡單的智慧型指標
rt,參考了 stl msvc 中shard ptr的實現,基本原理是引用計數,利用ref cnt類來管理記憶體,在shared ptr建立時建立,此後shared ptr僅是在拷貝複製析構的過程中對引用進行修改,個人覺得比較有意思的乙個地方在於通過對ref cnt類多型的應用使得shared pt...
自己實現乙個智慧型指標
要實現乙個智慧型指標主要實現下面幾個函式 1 建構函式 2 拷貝建構函式 3 析構函式 4 賦值運算子函式 5 獲取引用計數函式 重點 1 構造,拷貝構造 1 2 析構函式會使引用計數 1.3 賦值運算子會使之前的引用計數 1。使新賦值過來的引用計數 1 include template class...
智慧型指標的簡單實現
智慧型指標 它的一種通用實現方法是採用引用計數的方法。智慧型指標將乙個計數器與類指向的物件相關聯,引用計數跟蹤共有多少個類物件共享同一指標。有兩種實現方法,本例簡單的實現了智慧型指標。include include using namespace std template class smartpt...