Попытка удалить указатели в списке приводит к постоянному росту использования памяти

Я думаю, что здесь я пытаюсь использовать неправильный подход, поэтому, пожалуйста, скажите мне, если то, что я пытаюсь достичь, не сработает с этой "техникой" .

У меня есть объект с именем Spawner, который порождает KillerObjects каждые X мс, когда я хочу, чтобы KillerObject был уничтожен, я вызываю:

void Spawner::RemoveKillerObject(KillerObject* removeThis)
{
    garbageList.push_back(removeThis);
}

Затем каждый раз, когда Spawner обновляется, он будет перебирать список мусора, чтобы удалить каждый объект, который был отправлен в список мусора, например:

 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.

Объекты "удаляются" в игре, так как я не могу столкнуться с ними, и они не будут нарисованы. Но это приводит к постоянному увеличению использования моей памяти, я знаю, что это причина потому что, если я удалю этот код, использование памяти будет стабильным.

Мы очень ценим указание в правильном направлении или любую другую помощь.

С уважением

Маркус

0
задан Orujimaru 29 November 2011 в 10:09
поделиться