std::map 占用内存竟然达到1G,请高手指点

liyunsheng613 2010-05-30 07:30:05
测试代码如下:

// EventTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <map>
using namespace std;
typedef std::map<int,int> IntMap;
int _tmain(int argc, _TCHAR* argv[])
{
IntMap testMap;
int i=0;
int j =0;
for( i=1; i< 10000000;i++)
{
int k =j++;
testMap.insert(IntMap::value_type(i,i));

if( 0 == i%10000)
{
cout << "Has Deal " << i << "lines" << endl;
}
}
getchar();
return 0;
}


这个测试程序占用的内存竟然接近1G,请高手指点。怎么需要那么大内存呢?
...全文
1481 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianuMan 2010-06-05
  • 打赏
  • 举报
回复
我这里用了 864m内存

YODOYODO 2010-06-05
  • 打赏
  • 举报
回复
你装这么多东西, 还是放在硬盘里吧.
cs_yagami 2010-06-05
  • 打赏
  • 举报
回复
可是.....你什麼時候需要做這種這麼大的東西呢?
如果沒有,問這個是沒啥意義,不如換其他儲存的方式。
liyunsheng613 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dskit 的回复:]
10000000*4/1024/1024 约等于382M, 加上红黑树的指针域,382*4 约等于1G了, 这个结果还算正常了,不算很离谱。
[/Quote]
10000000*4/1024/1024 约等于38.2M吧
icansaymyabc 2010-06-03
  • 打赏
  • 举报
回复
一个活动进程,除了数据结构所需空间之外,你无法控制的缓冲区也要占用空间。
dskit 2010-06-02
  • 打赏
  • 举报
回复
10000000*4/1024/1024 约等于382M, 加上红黑树的指针域,382*4 约等于1G了, 这个结果还算正常了,不算很离谱。
liyunsheng613 2010-06-02
  • 打赏
  • 举报
回复
不要让帖子沉下去了,寻找高手。
dadun 2010-05-30
  • 打赏
  • 举报
回复
学习了,好深奥啊。。。
cattycat 2010-05-30
  • 打赏
  • 举报
回复
这个估计没什么好办法了,不太清楚有没有优化的办法。
liyunsheng613 2010-05-30
  • 打赏
  • 举报
回复
谢谢楼上的指点。
1,红黑树有left,right,parent三个指针,再加上color算上字节对齐就是24字节,然后加上map的<int,int>就32自己,1KW数据就是32*10,000,000 = 320M。
2,如果是分页引起的,有没有什么办法能让他降低到400M左右呢?
高手指点。
cattycat 2010-05-30
  • 打赏
  • 举报
回复
map是红黑树,每个节点加上key,value和指针估计有不小于16字节了,我这里测试达到700M+了,可能是最后频繁换页引起的吧
mzlogin 2010-05-30
  • 打赏
  • 举报
回复
我用gcc编译后测试竟也达到220M,。。。
不了解Map的内部存储机制。
理解中10M左右个map元素,一个map里存放的数据为8Byte,实际容量应该不至于是这的几倍吧。。。
感觉应该在百M内比较正常。。。
贪食蛇男 2010-05-30
  • 打赏
  • 举报
回复
光这么多int都得几百M吧……

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧