このようなシングルトンパターンを作成する2つの方法を知っています:
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
プログラム自体(またはOS?)によって削除されます。
しかし~sgt_new()
、プログラムが終了すると、デバッガーには中断アクションがまったくありません。OS がこれらのリソースを再利用すると誰かが言っています。本当 ?では、インスタンスのsgt_new
メモリ リークは発生しませんか?
私のリストの上記のポイントとは別に。シングルトンの2つの実装の間に他の違いはありますか?