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