2012-04-25 5 views
0

私はBadaの静的ポインタと変数にいくつか問題があります。まず私は、シングルトンクラスを作成しようとしたと、このようなものでした: ヘッダー:Bada、静的ポインタクラッシュ

static Session *getInstanceOf(); 
private: 
    static Session *instance; 

出典:

Session* Session::getInstanceOf(){ 
    if (instance==NULL){ 
     instance=new Session();} 
    return instance; 
} 

をしかし、アプリケーションがエラーメッセージなしでクラッシュしました。静的なクラスのフィールドを作成して返しました:

ArrayList* User::GetUniv() 
{ 
    return &Universities; 
} 

しかし、それは同じ結果を持っていました。なぜそういうことが分かりますか?助けてくれてありがとう。

+0

ない十分な情報のように行うことができます。複数のスレッドを使用していますか?また、このコードが漏れます。 –

+0

シングルトンソリューションについて:セッションポインタをNULLに初期化しましたか?また、どこでクラッシュしたのですか? getInstanceOf関数内で、または返されたptrなどを使用していますか? –

答えて

1

実装ファイルにSession::instanceを初期化していますか?

Session* Session::instance = NULL; 

編集:このようまたstatic initialization order fiascoを考えます。

+0

助けてくれてありがとう。意外にも両方の場合に。乾杯。 – jimmy

+0

Cool。その場合は、(あなたの意見では)あなたの問題に最もよく答えた投稿を選び、チェックマークをクリックしてそれを受け入れることができます。 –

0

これはやや危険です:

if (instance==NULL){ 
    instance=new Session();} 

インスタンスがNULLに初期化されているようには見えないので。初期化されていない場合、ポインタにガベージ値がある可能性があります。

1

あなたはこの

ArrayList* User::GetUniv() 
{ 
    static Universities; 
    return &Universities; 
}