Search code examples
c++dictionarystlfree

Delete memory of std::map<int, string> completely


I have a map filled with and now I want to delete the memory completely. How do I do this right? couldn't find anything specific for this topic, sorry if it is already answered...

my code is something like this:

      for(std::map<short,std::string>::iterator ii=map.begin();   
ii!=map.end(); ++ii)
    {
        delete &ii;
    }

But it doesnt work. Can anybody help pls?

regards, phil


Solution

  • The way to do it right is not to do it. A map will automatically release resources when it's destroyed for anything allocated automatically.

    Unless you allocated the values with new, you don't delete them.

    {
        std::map<short,std::string> x;
        x[0] = "str";
    }
    //no leaks here
    
    {
        std::map<short,std::string*> x;
        x[0] = new std::string;  
        delete x[0];
    }