我认为我在这里尝试的方法是错误的,所以请告诉我我想要实现的目标是否不适用于这种“技术”。
我有一个名为 Spawner 的对象,它每 X 毫秒生成 KillerObjects,当我想要销毁 KillerObject 时,我调用:
void Spawner::RemoveKillerObject(KillerObject* removeThis)
{
garbageList.push_back(removeThis);
}
然后每次更新 Spawner 时,它都会循环遍历 garbageList 以删除已被插入垃圾列表的每个对象,如下所示:
void Spawner::Update(float elapsedTime)
{
elapsedSince += elapsedTime;
if (elapsedSince > spawnRate)
{
Spawn();
elapsedSince = 0;
}
for each (KillerObject* removeThis in garbageList)
{
spawnedObjects.remove(removeThis);
}
garbageList.clear();
for each (KillerObject* ko in spawnedObjects)
{
ko->Update(elapsedTime);
}
}
Spawn 只是创建一个指向 KillerObject 的指针并将其插入 spawnedObject 列表。
对象在游戏中被“删除”,因为我无法与它们发生碰撞,也不会绘制它们。 但这会导致我的内存使用量不断增长,我知道这是原因,因为如果我删除这段代码,内存使用量就会稳定。
非常感谢指向正确方向的观点或任何其他帮助。
亲切的问候
马库斯
最佳答案
也许您实际上并没有删除对象?您要从列表中删除它们,但我在任何地方都看不到删除语句...?
关于c++ - 尝试删除列表中的指针会导致内存使用量不断增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308994/