【发布时间】:2011-03-03 10:50:56
【问题描述】:
std::map<int, int> * mp = new std::map<int, int>;
for(int i = 0; i < 999999; i++){
mp->insert(std::pair<int, int>(i, 999999-i ));
}
p("created");
//mp->clear(); - doesn't help either
delete mp;
p("freed");
问题是:“删除 mp”没有任何作用。比较:
std::vector<int> * vc = new std::vector<int>;
for(int i = 0; i < 9999999; i++){
vc->push_back(i);
}
p("created");
delete vc;
p("freed");
释放内存。如何从 map 中释放内存?
PS: p("string") 只是暂停程序并等待输入。
【问题讨论】:
-
你怎么知道“删除 mp 没有任何作用”?你为什么要更新地图?
-
你怎么知道“删除 mp 没有任何作用”? - 我只看任务管理器(linux 中的“top”),我看到了应用程序使用的 RAM。你为什么要更新地图? - 只是试验。
-
为什么要这样做?
-
我不会将“检查应用程序使用的 RAM”称为可靠测试。如果您使用的是 Linux,请改用
valgrind。
标签: c++ stl memory-leaks map