В моей игре на C++ у меня есть указатель на EnemyType
. Я Визуальный детектор утечек для обнаружения утечек памяти, и это говорит мне, что есть утечка в следующем фрагменте кода:Утечка памяти C++ при создании массива
vector<EnemyType*> enemyTypes(number_of_lines);
for (int i = 0; i < number_of_lines; i++)
{
enemyTypes[i] = new EnemyType();
}
Скажем number_of_lines
в этом случае 3. Как возможно, что я создаю утечку прямо здесь? Могу ли я что-то сделать?
Я начал изучать C++ около месяца назад, и я все еще учился каждый день, но я не могу понять некоторые вещи (например, это), не объясняя меня.
EDIT: Я изменил код, чтобы использовать вектор вместо простого массива.
Вы пытались векторов? –
Вы только создаете утечку, когда забываете освободить память. Вышеприведенный код не показывает эту проблему. Создайте MCVE: http://stackoverflow.com/help/mcve –
Если 'enemyTypes' является локальным для метода, и вы не' delete' каждого элемента (и самого массива), то у вас есть утечка. Рассмотрим использование 'std :: vector', динамическая память не всегда доступна, и при ее использовании правильные интеллектуальные указатели могут использовать часть управления. –
Jack