我知道两种制作单例模式的方法:
class sgt_static
{
sgt_static() { }
public:
static sgt_static* get_instance()
{
static sgt_static instance;
return &instance;
}
}
还有这个:
class sgt_new
{
sgt_new() { }
public:
static sgt_new* get_instance()
{
static sgt_new* instance = NULL;
if ( instance == NULL ) instance = new sgt_new();
return instance;
}
}
我知道它们之间的一些区别:
- 的实例
sgt_new
应该由我自己删除。 - 如果程序退出(通常),实例
sgt_static
将被程序本身(或操作系统?)删除。
但是我在中设置断点~sgt_new()
,当我的程序退出时,调试器根本没有任何中断动作。有人说操作系统会回收这些资源。真的吗 ?那么,实例sgt_new
不会导致任何内存泄漏吗?
除了我的清单上面的几点。2个单例实现之间还有其他区别吗?