为什么同样的new std::set[20000]代码,在不同的工程中占用的内存差距有40倍之多?

Herro 2007-08-10 09:31:15
使用的是VS2005。

我在我的一个项目中发现new std::set<int>[20000]语句会分配700m的内存,而用vs新建一个项目以相同代码只分配了20m内存,此问题导致我内存很简单的就被耗尽2G。

尝试new int没有此问题,因此怀疑是stl上有什么原因,但始终没有头绪。

各位能否根据相关经验帮我推测问题的可能原因么?
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Herro 2007-08-10
  • 打赏
  • 举报
回复
哈哈哈,我找到问题原因了,是gflags这个内存调试工具导致
谢谢楼上上的
Herro 2007-08-10
  • 打赏
  • 举报
回复
set容器是树形的,应该没有预分配吧?
关于编译选项,确认都是相同的
gfxiang 2007-08-10
  • 打赏
  • 举报
回复
stl容器类一般都是事先预留多分配一些空间,等不够用的时候再一定比率增加空间
你可以调用用set<int>::max_size()返回当前分配的空间大小,比较一下两个项目分配空间有什么不同。

同样的代码同样的编译器,怎么会有这么大的差别呢,我也觉得奇怪,是不是哪里设置了什么编译选项导致的?

64,685

社区成员

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

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