Ich habe den folgenden Code, und ich werde gefragt, ob es hier ein Speicherleck gibt. Ich glaube, es gibt ein Speicherleck innerhalb von "function", weil es nach a = new A() keinen Löschvorgang gibt; . Habe ich recht?Memory Leak Spotting
class A
{
public:
A(){};
~A(){};
private:
double d[10];
};
void function (A* a)
{
delete a;
a = new A();
}
void main (void)
{
A* p = new A();
function(p);
delete p;
}
Ja, Sie haben Recht. –
Es ist schlimmer als nur ein Speicherleck zu haben ... du löschst auch die erste Zuweisung von A ... einmal in der Funktion (A * a) und einmal in main(). – aSteve
Und es gibt auch eine doppelte Löschung, weil 'p' zweimal gelöscht wird, einmal in' function' und einmal in 'main'. –