C ++ Singleton設計模式最近我碰到了C ++的Singleton設計模式的實現/實現??雌饋硐襁@樣(我從現實生活中采用了它):// a lot of methods are omitted hereclass Singleton{
public:
static Singleton* getInstance( );
~Singleton( );
private:
Singleton( );
static Singleton* instance;};從這個聲明我可以推斷出實例字段是在堆上啟動的。這意味著存在內存分配。對我來說完全不清楚的是,什么時候內存將被解除分配?還是有漏洞和內存泄漏?好像在實施中存在問題。我的主要問題是,如何以正確的方式實施它?
3 回答
Cats萌萌
TA貢獻1805條經驗 獲得超9個贊
作為一個單身人士,你通常不希望它被破壞。
當程序終止時,它將被拆除并解除分配,這是單例的正常,期望的行為。如果你想能夠明確地清理它,那么向類中添加一個靜態方法是非常容易的,它允許你將它恢復到干凈狀態,并在下次使用它時重新分配它,但這超出了范圍。 “經典”單身人士。
浮云間
TA貢獻1829條經驗 獲得超4個贊
你可以避免內存分配。存在許多變體,在多線程環境的情況下都存在問題。
我更喜歡這種實現(實際上,我沒有正確地說我更喜歡,因為我盡可能地避免單身人士):
class Singleton{private:
Singleton();public:
static Singleton& instance()
{
static Singleton INSTANCE;
return INSTANCE;
}};它沒有動態內存分配。
- 3 回答
- 0 關注
- 560 瀏覽
添加回答
舉報
0/150
提交
取消
