The following code is giving me a memory leak (using Visual Studio):
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <vector>
#include <memory>
struct Listener {};
struct Subject
{
std::vector<Listener*> listeners;
};
int main(void)
{
Subject subject;
_CrtDumpMemoryLeaks();
return 1;
}
I presume this is because the STL vector container is using memory on the heap when the Subject class is instantiated. How do I ensure that the vector container is destroyed when the program exits? (I've tried deleting the container in the Subject destructor, but that doesn't seem to work).
The vector is destroyed when the program exits, you don't need to ensure it. You do need to ensure that _CrtDumpMemoryLeaks is called after that destruction if you don't want it to report the allocated memory as "leaked":
int main()
{
{ Subject subject; }
_CrtDumpMemoryLeaks();
return 1;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With