map<int,字符串的可用内存>

Free memory of a map<int, string>

本文关键字:内存 gt lt int map 字符串      更新时间:2023-10-16

我有一个程序:

#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,清除后没有任何变化。为什么?如何清除地图内存

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