C ++ Singleton設(shè)計模式最近我碰到了C ++的Singleton設(shè)計模式的實現(xiàn)/實現(xiàn)??雌饋硐襁@樣(我從現(xiàn)實生活中采用了它):// a lot of methods are omitted hereclass Singleton{
public:
static Singleton* getInstance( );
~Singleton( );
private:
Singleton( );
static Singleton* instance;};從這個聲明我可以推斷出實例字段是在堆上啟動的。這意味著存在內(nèi)存分配。對我來說完全不清楚的是,什么時候內(nèi)存將被解除分配?還是有漏洞和內(nèi)存泄漏?好像在實施中存在問題。我的主要問題是,如何以正確的方式實施它?
3 回答

Cats萌萌
TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊
作為一個單身人士,你通常不希望它被破壞。
當(dāng)程序終止時,它將被拆除并解除分配,這是單例的正常,期望的行為。如果你想能夠明確地清理它,那么向類中添加一個靜態(tài)方法是非常容易的,它允許你將它恢復(fù)到干凈狀態(tài),并在下次使用它時重新分配它,但這超出了范圍。 “經(jīng)典”單身人士。

浮云間
TA貢獻(xiàn)1829條經(jīng)驗 獲得超4個贊
你可以避免內(nèi)存分配。存在許多變體,在多線程環(huán)境的情況下都存在問題。
我更喜歡這種實現(xiàn)(實際上,我沒有正確地說我更喜歡,因為我盡可能地避免單身人士):
class Singleton{private: Singleton();public: static Singleton& instance() { static Singleton INSTANCE; return INSTANCE; }};
它沒有動態(tài)內(nèi)存分配。
- 3 回答
- 0 關(guān)注
- 550 瀏覽
添加回答
舉報
0/150
提交
取消