Я пытаюсь сделать алгоритм, который может нарисовать объекты моей изометрической игры в правильном порядке. Мои объекты хранятся в векторе указателей.Еще один вопрос с проблемой утечки векторных данных в C++
В функции рисования сначала создаю новый вектор тех же указателей, а затем начинаем с цикла for, который обрабатывает количество объектов, которые я хочу нарисовать. Внутри этого цикла есть еще один цикл, который определяет, какой объект должен быть нарисован, и когда объект рисуется, его указатель удаляется из вектора с помощью vector.erase(), поэтому одно и то же лицо не будет дважды рисоваться (вот почему я создавая копию вектора, содержащего указатели на объекты).
В любом случае, мой код сам работает, и сущности рисуются так, как я хочу, но у меня, кажется, есть утечка памяти (я могу увидеть, как память в диспетчере задач Windows поднимается на 28 кбит/с).
Утечка памяти остается, даже если я outcomment все, кроме этого:
vector<Entity*> list = ent_list; // ent_list is the list of entity pointers
list.clear();
Так что я думаю, что я что-то не хватает, но я не уверен, что. Я подумал, что, поскольку я не использовал «новый», память позаботилась бы, но, очевидно, это не ... Надеюсь, кто-то может мне помочь!
/Феодор
Как создаются объекты Entity? вы говорите, что вы не используете новый, какой-то библиотечный код использует новое от вашего имени? –
@jk Я думаю, что он означает, что он не использовал новый в самом списке ... – celavek
Task Manager не помогает в определении утечек памяти. Вы можете исправить освобождение всей памяти, и объем используемой памяти все равно не снизится (в диспетчере задач). –