2012-04-25 113 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

沒有足夠的信息。你使用多線程?此外,此代碼泄漏。 – 2012-04-25 15:29:48

+0

關於你的單身解決方案:你是否將Session指針初始化爲NULL?它也在哪裏崩潰?在getInstanceOf函數中,或者當你使用返回的ptr等? – 2012-04-25 15:30:18

回答

1

您是否在您的實施文件中初始化Session::instance?就像這樣:

Session* Session::instance = NULL; 

編輯:還要考慮static initialization order fiasco

+0

感謝它幫助。令人驚訝的是在這兩種情況下。乾杯。 – jimmy 2012-04-25 17:02:23

+0

很酷。在這種情況下,您可以選擇(在您看來)最好地回答您的問題的帖子,並通過單擊刻度號來接受它。 – 2012-04-25 17:22:31

0

這有點危險:

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

因爲你的情況不會出現都被初始化爲NULL。未初始化時,指針可能具有垃圾值。

1

你可以這樣做

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