mercredi 12 février 2020

Why is there a memory leak in the following C++ code?

Assume a class called Vec exists with a vector called arr as it's only member . The following code does NOT leak memory. (Which means my destructor for Vec is working as expected.)

int main() {
    Vec *obj = new Vec(5); // initializes a vector of size 5
    delete obj;
}

However, in the following code, there is a memory leak. But why? I seem to have a delete for each use of new. What am I missing?

int main() {
    Vec* obj;
    obj = new Vec(5);

    if (true) {
        delete obj;
        Vec* obj = new Vec(6);
    }

    delete obj;
}

PS: I checked for memory leak using valgrind.

Aucun commentaire:

Enregistrer un commentaire