救命!非常大规模的数据分析老是出现内存错误,map难道是分配在局部堆上的?

skyremember 2008-09-17 08:54:24
救命!非常大规模的数据分析老是出现内存错误,map<string,int>难道是分配在局部堆上的?
救命!老是出现内存错误,map<string,int>难道是分配在局部堆上的?

有时在_heap_alloc_dbg处中断,有时说out of memory,

反正都是boost::regex中的一个new引起的,在那之前有非常大规模的数据分析,运行大约10分钟,保证就在这里出错。

stl的内存难道是在局部堆上分配吗?看程序占用内存的数量,恰好增加了大约1M,可是把heapsize,stacksize一类的都改为3M,一样在这时出错。
...全文
195 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyremember 2008-09-17
  • 打赏
  • 举报
回复
还有,map<string,int>速度慢到了令人难以忍受的地步,本来20秒就可以完成的操作,竟然要3分钟!
skyremember 2008-09-17
  • 打赏
  • 举报
回复
stl::string str;
str="aaaaaaaaaa";

内存分配操作是在那里进行的呢?

F11跟踪一遍,没有malloc,没有new
skyremember 2008-09-17
  • 打赏
  • 举报
回复
全局堆(Global Heap)和本地堆(Local Heap)
yshuise 2008-09-17
  • 打赏
  • 举报
回复
“局部堆”我没听过这个名词,但是的确是在堆上分配的。
它的方式就是自己管理一个内存池,应该不是它的问题,我想。
xkyx_cn 2008-09-17
  • 打赏
  • 举报
回复
是在堆上的,但没听说过局部堆这个概念,你可以参考一下stl的allocator源码

[Quote=引用 3 楼 skyremember 的回复:]
谢谢yshuise,不过代码非常庞大,而且,是公司的,我要是贴出来,嘿嘿……

而我又不知道到底是那段代码有问题。

我想先问一问,VS2005 stl 的内存分配应该不是在局部堆上的吧?
[/Quote]
skyremember 2008-09-17
  • 打赏
  • 举报
回复
谢谢yshuise,不过代码非常庞大,而且,是公司的,我要是贴出来,嘿嘿……

而我又不知道到底是那段代码有问题。

我想先问一问,VS2005 stl 的内存分配应该不是在局部堆上的吧?

xkyx_cn 2008-09-17
  • 打赏
  • 举报
回复
有内存泄漏?
yshuise 2008-09-17
  • 打赏
  • 举报
回复
需要看代码

65,186

社区成员

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

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