A: It properly does not delete pointers, because it can't assume that nothing else points at the same thing. std::map cleans up the memory *it* explicitly allocated. *You* clean up the memory *you* explicitly allocated.
Here's how to safely delete all elements in a map, that will work for any container:
std::map<int, char*> Mappy; int main() { for(int Index = 0; Index < 10; ++Index) Mappy.insert(std::make_pair(Index, new char[10])); for(std::map<int, char*>::iterator MapItor = Mappy.begin(); MapItor != Mappy.end(); ++MapItor) { char* Value = (*MapItor).second; delete Value; } system("pause"); return 0; }
No comments:
Post a Comment