我已经阅读了很多关于单例的文章,但没有一个能够解决我的问题。我知道只有在需要时才应该使用单例,在我的游戏中,我正在为引擎的特定部分使用它们。
那么,我最初将我的单例设置为指针,如下所示:
static MapReader* Instance()
{
if (instance == 0)
{
instance = new MapReader();
return instance;
}
return instance;
}
然而,我一直认为使用过多指针容易出现泄漏问题,如果我能不用它们的话(或者必须使用智能指针),我更倾向于不使用。因此,我将所有单例都改成了如下的引用形式:
static MapReader& Instance()
{
static MapReader instance;
return instance;
}
然而,现在我发现我的游戏在奇怪的时间会出现卡顿,然后加速,就像 FPS 有点不稳定。
我的问题是:引用单例是否全部堆积在堆栈上?还是它们仍然分配在堆上?我应该把它们改回指针并使用智能指针吗?