小编Ori*_*ria的帖子

引用单例是在堆栈还是堆上?

我在这里读过很多关于单身人士的文章,但没有一篇真正触及我的问题。我知道单例应该只在需要时使用,并且在我的游戏中,我将它们用于引擎的特定部分。

也就是说,我最初将单例作为指针,如下所示:

static MapReader* Instance()
{
    if (instance == 0)
    {
        instance = new MapReader();
        return instance;
    }
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

然而,我总觉得使用太多指针对泄漏不利,如果可以的话,我宁愿不使用它们(或者如果必须的话,使用智能指针)。所以我将所有单例更改为如下引用:

static MapReader& Instance()
{
    static MapReader instance;
    return instance;
}
Run Code Online (Sandbox Code Playgroud)

然而,现在我注意到我的游戏有时会滞后,然后又加速,就像 FPS 有点不稳定一样。

我的问题是;引用单例是否全部堆积在堆栈上?或者它们仍然在堆上分配吗?我应该使用智能指针将它们改回指针吗?

c++ singleton pointers reference

6
推荐指数
1
解决办法
1641
查看次数

标签 统计

c++ ×1

pointers ×1

reference ×1

singleton ×1