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 关注
- 528 浏览
添加回答
举报
0/150
提交
取消