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 ⅈ
    }
But it doesnt work. Can anybody help pls?
regards, phil
clear() function is used to remove all the elements from the map container and thus leaving it's size 0. Syntax: map1. clear() where map1 is the name of the map.
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.
You can simply call myMap. clear() to delete myMap 's content.
No it doesn't free the memory if it is a naked pointer. You need to ensure that the memory is deallocated appropriately.
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];
}
                        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