我有一张地图,现在我想完全删除内存.我该怎么做?找不到任何针对这个主题的内容,对不起,如果已经回答了......
我的代码是这样的:
for(std::map<short,std::string>::iterator ii=map.begin();
ii!=map.end(); ++ii)
{
delete ⅈ
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有人可以帮忙吗?
问候,菲尔
Luc*_*ore 10
做正确的方法不是这样做.map当自动分配的任何内容被销毁时,A 会自动释放资源.
除非你分配了值,否则你new不会delete.
{
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];
}
Run Code Online (Sandbox Code Playgroud)
只需致电map.clear();.这将释放地图在内部分配的所有对象.
请注意,在任务管理器等系统工具中,您的应用程序仍然可以显示相同的内存量.操作系统决定不再回收您的进程曾经保存的内存,以防再次分配它.如果它开始不足,它会在以后收回它.
| 归档时间: |
|
| 查看次数: |
14909 次 |
| 最近记录: |