我在这里读过很多关于单身人士的文章,但没有一篇真正触及我的问题。我知道单例应该只在需要时使用,并且在我的游戏中,我将它们用于引擎的特定部分。
也就是说,我最初将单例作为指针,如下所示:
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 有点不稳定一样。
我的问题是;引用单例是否全部堆积在堆栈上?或者它们仍然在堆上分配吗?我应该使用智能指针将它们改回指针吗?