C ++ Singleton设计模式

C ++ Singleton设计模式

最近我碰到了C ++的Singleton设计模式的实现/实现。看起来像这样(我从现实生活中采用了它):

// a lot of methods are omitted hereclass Singleton{
   public:
       static Singleton* getInstance( );
       ~Singleton( );
   private:
       Singleton( );
       static Singleton* instance;};

从这个声明我可以推断出实例字段是在堆上启动的。这意味着存在内存分配。对我来说完全不清楚的是,什么时候内存将被解除分配?还是有漏洞和内存泄漏?好像在实施中存在问题。

我的主要问题是,如何以正确的方式实施它?


慕妹3146593
浏览 529回答 3
3回答

Cats萌萌

作为一个单身人士,你通常不希望它被破坏。当程序终止时,它将被拆除并解除分配,这是单例的正常,期望的行为。如果你想能够明确地清理它,那么向类中添加一个静态方法是非常容易的,它允许你将它恢复到干净状态,并在下次使用它时重新分配它,但这超出了范围。 “经典”单身人士。

浮云间

你可以避免内存分配。存在许多变体,在多线程环境的情况下都存在问题。我更喜欢这种实现(实际上,我没有正确地说我更喜欢,因为我尽可能地避免单身人士):class Singleton{private:    Singleton();public:    static Singleton& instance()    {       static Singleton INSTANCE;       return INSTANCE;    }};它没有动态内存分配。
打开App,查看更多内容
随时随地看视频慕课网APP