当前位置: 首页 > 知识库问答 >
问题:

地图的可用内存[重复]

端木令雪
2023-03-14

我有一个计划:

#include <iostream>
#include <map>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <iomanip>
#include <vector>
#include <stdarg.h>
#include <stdio.h>
#include <unistd.h>
using namespace std;

int main() {
    map<int, string> m;

    for (int i = 0; i < 1000000; i++)
    {
        m[i] = "jahsdghsagdfv sahgvsahgd fvsahgdf fsdfjsadvhjgsd jhgfhsahfvsafh asfvasgfv jhgfdvsahgvfs";
    }
    m.clear();
    while (1) {sleep(5);}
    return 1;
}

clear()不执行任何操作。在内存监视器中,我看到内存使用量为184 Mb,清除后没有任何变化。为什么?如何清除地图的内存?

共有1个答案

堵彬彬
2023-03-14

是的,map::clear执行以下操作:“从映射容器中删除所有元素(已销毁),使容器的大小为0。”数据也不会从堆栈/堆中删除,但这不会影响您,因为您将没有指向该过时数据的指针和强制转换类型。可能在重新填充映射时,内存区域将被重用并用新值更新(如果其他变量同时未使用它)。

 类似资料:
  • 问题内容: 我有一个Map(String,String),我想找到一个条目和Map的内存大小。我读的地方,仪表可能是有用的(仪器)。有人有主意吗? 提前致谢。 问题答案: 对于64位JVM,空白实例应为24字节,对于32位JVM,空白实例应为12字节。这是我发现有用的@PeterLawrey的技术,基于MemoryUsageExamplesTest:

  • 我试图获取本地存储变量并将其发送到报头中的GET HTTP请求中,但当它到达API时,令牌为null。我记录了令牌,它显示得很好。我不确定我做错了什么。谢谢你的帮助。

  • 问题内容: 我在正在研究的项目中遇到问题。我找到了解决方法,但是我不确定为什么我的解决方案有效。我希望对Go指针的工作方式有更多经验的人能对我有所帮助。 我有一个Model接口和一个实现该接口的Region结构。Model接口是在Region结构的指针上实现的。我也有一个Regions集合,它是Region对象的一部分。我有一种方法可以将Regions对象转换为[] Model: 当我运行此代码时

  • 问题内容: 无论如何,是否可以使用新的Swift语言从Objective-C 模拟? 例如: 问题答案: 现在,它已成为标准库的一部分:。 迅捷3 对于Swift 3,请使用:

  • 问题内容: 我正在阅读android docs http://developer.android.com/reference/com/google/android/gms/maps/MapFragment.html ,我碰到了这句话: 从GoogleMap获得的所有对象都与该视图相关联。重要的是不要在视图的生命周期之内保留对象(例如Marker)。否则将导致内存泄漏,因为无法释放视图。 我不完全了

  • 用户上传一个由一百万字组成的巨大文件。我解析文件并将文件的每一行放入< code>LinkedHashMap中 我需要按键访问和删除O(1)。此外,我需要保留访问顺序,从任何位置迭代并排序。 内存消耗是巨大的。我启用了的重复数据删除功能,该功能出现在Java 8中,但事实证明,消耗了大部分内存。 我找到了< code>LinkedHashMap。Entry占用40个字节,但是只有2个指针——一个指