地图的空闲内存<int,string =“”> </int,>

时间:2014-03-12 11:37:16

标签: c++ memory map

我有一个程序:

#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 个答案:

答案 0 :(得分:1)

是的,map :: clear做了一些事情:&#34;删除地图容器中的所有元素(已销毁),使容器的大小为0 &#34。 数据也不会从堆栈/堆中删除,但这不会影响您,因为您没有指针,也没有对该过时数据的强制转换类型。 可能在您重新填充地图时,将重新使用内存区域并使用新值更新(如果其他变量未同时使用它)。