简体   繁体   中英

C++ Is it possible to leak memory if i'm not using dynamic memory

None of my code uses dynamic memory, but I do have a vector of pointers to a struct called Node , and in my code, I do lose references to those Node s at one point. The struct looks like this:

struct Node {
int value;
Node* next;
};

I also have a for loop that tries to find the smallest value in my vector of Node pointers by taking the smallest Node off as I go. Here, lists is the vector of Node pointers, and add is the previous smallest value.

for (int i = 1; i < int(lists.size()); ++i) {
        if (lists[i]->value <= add) {
            add = lists[i]->value;
            lists[i] = lists[i]->next;
            break;
        }
    }

I thought I couldn't leak memory if I was just in the stack though...

If the Node referenced in the lists array is dynamically allocated, you should free all of them manually. Otherwise there will be memory leak. You can find more details on https://en.wikipedia.org/wiki/Memory_leak

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM