Следующий код приводит к утечке памяти:Динамически выделяется массив внутри станд :: список приводит к memoy утечки
std::list<float*> vertices;
float* v;
for (int i = 0; i < 50000; i++){
v = new float[3];
v[0] = v[1] = v[2] = 13;
vertices.push_back(v);
}
std::list<float*>::iterator curr;
for(curr = vertices.begin(); curr != vertices.end(); curr++) {
delete[] *curr;
}
vertices.clear();
Я понятия не имею, почему это происходит, но я предполагаю, что это связано с какой-то аномалией станд :: список. Более странная часть заключается в том, что если я буду запускать код более одного раза, количество просочившейся памяти не изменится. Может быть, я пропустил что-то действительно основное?
Может ли кто-нибудь предложить причину этого? Могу ли я решить эту проблему только с изменением части уничтожения кода?
Дополнительная информация:
Это приложение mfc. Код выполняется при нажатии кнопки. Прежде чем нажать кнопку, я вижу в диспетчере задач 15 МБ. После того, как я нажимаю кнопку, я вижу 40 МБ. Кнопка ничего не делает, кроме выполнения этого кода.
Почему, по вашему мнению, здесь происходит утечка памяти? – ronag 2010-11-27 20:14:30
Сколько просачивается память? – suszterpatt 2010-11-27 20:15:49