2016-04-27 6 views
0

Iv'eは次のようになりますシングルトンクラスを実装クラッシュインスタンスの初期化:シングルトンクラスは

static MySingleton instance; 

私は実装に何か間違っていますか? 私はビジュアルスタジオに取り組んでいます。2015

+0

どこがクラッシュしますか?デバッガはあなたに何を伝えますか? –

+0

インスタンスがすでに作成されているかどうかをどのように指定しますか? [this](https://en.wikipedia.org/wiki/Singleton_pattern)を見ましたか? – cromod

+2

@cromod staticは一度しか初期化されないので、関数は正しいです。問題はシングルトンのコンストラクタにあると思う。 – teivaz

答えて

0

stdlibが完全に初期化される前に 'std :: map'の初期化が行われる可能性があります。

これは、GetInstance()が別の静的初期化子から呼び出された場合に発生します。初期化の順序は、異なるライブラリ間では定義されていません。

解決策は、mainが呼び出される前にPOD以外のものを構築しないことです。

+0

私はそれが私の問題だと思う。私は非常に早く呼び出される可能性のある静的関数でGetInstanceを使用します。問題の修正をどのようにお勧めしますか? – rosl

関連する問題