Memory Leak with Pointer in Loop.
Verfasst: 23. Juli 2010 16:22
Hi, ich arbeite in visual studio 2008 und debugge mein Program gerade mit einem leak detector(visual leak detector). Dabei bekomme ich eine memory leak anzeige wenn ich code wie den folgenden schreibe:
Das Memory leak wird für die Zeile "Obj* myobject = new Obj(); " in der inneren der ersten doppelten for loop angezeigt.
Mir ist zwar klar, dass der Obj pointer dann hier in der ersten doppelten for loop verloren geht, aber ich hab den pointer ja auch in den vector kopiert. Das sollte daher doch eigentlich kein leak sein oder? und es ändert auch nichts wenn ich am ende des inneren for myobject = NULL; setzte. VIelleich kann mir hier wer weiterhelfen wo dass Problem liegt.
Danke & lg scr
Code: Alles auswählen
void MyClass::foo(double param1, double param2,...) // all params are int and doubles
{
vector<vector<Obj*>> objVectorStorage;
for(unsigned int i = 0; i < max1; i++) // max1 already given
{
vector<Obj*> objVector;
for(unsigned int j= 0; j < max2; j++) // max2 already given
{
Obj* myobject = new Obj();
myobject->setData(param1, param2, ...); // all params are int and doubles
objVector.push_back(myobject);
}
objVectorStorage.push_back(objVector);
}
//do some calculations here then copy all data in one vector like shown in the following
vector<Obj*> returnVecor;
for(unsigned int i = 0; i < objVectorStorage.size(); i++)
{
for(unsigned int j = 0; j < objVectorStorage[i].size(); j++)
{
Obj* tmpobj= objVectorStorage[i][j];
returnVecor.push_back(tmpobj);
}
}
return returnVecor;
}Mir ist zwar klar, dass der Obj pointer dann hier in der ersten doppelten for loop verloren geht, aber ich hab den pointer ja auch in den vector kopiert. Das sollte daher doch eigentlich kein leak sein oder? und es ändert auch nichts wenn ich am ende des inneren for myobject = NULL; setzte. VIelleich kann mir hier wer weiterhelfen wo dass Problem liegt.
Danke & lg scr