2012-04-25 104 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; 
}