乙個簡單的C 智慧型指標的實現

2021-06-26 19:39:38 字數 892 閱讀 5267

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...