【发布时间】:2012-04-15 15:00:34
【问题描述】:
所以,经典的简单单例实现如下:
class Singleton
{
private:
static Singleton* singleton;
Singleton() {}
public:
static Singleton* getInstance();
};
cpp 文件:
Singleton* Singleton::singleton = 0;
Singleton* Singleton::getInstance()
{
if (!singleton)
{
singleton = new Singleton;
}
return singleton;
}
我在这里看到内存泄漏 - '因为 new 没有 delete。但是在 C++ 中没有静态析构函数,所以我们不关心这个内存泄漏?
【问题讨论】:
-
预计单例对程序的整个生命周期都有用。
-
见C++ Singleton design pattern(或者只在SO上搜索singleton,你会发现很多信息)
-
这看起来是用 C# 重写的 Singleton 实现:msdn.microsoft.com/en-us/library/ff650316.aspx 但在 C# 中,“new”不需要“delete”。
-
@SChepurin 这个例子来自 GoF 书
-
@Hate.Nothing 是完美的。关于 Singleton 的删除有很多要讨论的“Singleton 是如何被删除的?”:sourcemaking.com/design_patterns/to_kill_a_singleton
标签: c++ design-patterns static singleton