3
的可用內存我有一個計劃:地圖<int, string>
#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;
}
明確的()什麼都不做。在內存監視器中,我看到內存使用率爲184 Mb,清除後沒有任何變化。爲什麼?如何清除地圖的內存?
您使用什麼內存顯示器?你是什麼意思,它什麼都不做?它從地圖中刪除所有元素。 –
在Ubuntu的Statndard – mitch
這有很多重複,但答案是內存是(或*可能*)由'map'釋放,但仍然映射到您的進程,以防需要再次分配內存。一種優化。如果另一個進程需要更多的內存,它可能會從您的進程中獲取可用內存。 –