Le code suivant conduit à une fuite de mémoire:tableau Dynamiquement alloué à l'intérieur std :: liste conduit à memoy fuites
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();
Je ne sais pas pourquoi cela se produit, mais je suppose qu'il est connecté à une anomalie de std :: liste. La partie la plus étrange est que si je lance le code plus d'une fois consécutivement, la quantité de mémoire qui fuit ne change pas. Se peut-il que quelque chose me manque vraiment?
Quelqu'un peut-il suggérer une raison à cela? Puis-je résoudre ce problème en changeant seulement la partie destruction du code?
Plus d'informations:
Ceci est une application de mfc. Le code est exécuté sur un bouton. Avant d'appuyer sur le bouton, je vois 15mb dans le gestionnaire de tâches. Après avoir appuyé sur le bouton, je vois 40mb. Le bouton ne fait qu'exécuter ce code.
Pourquoi pensez-vous qu'il y a une fuite de mémoire ici? – ronag
Quelle est la quantité de mémoire qui fuit? – suszterpatt
@ronag, @suszterpatt: Voir modification – Artium