C++ STL 内存碎片

neo_liang 2014-03-25 05:01:31
我在VC上开发用了很多STL的东西,如string。后来发现程序内存碎片很严重,找了下原因,发现STL的空间配置器直接new和delete的。
我想问下,这个有什么好的解决方法吗?GCC的STL是怎么样的,会不会也出现这样的问题?

我想把stlport移植到VC和GCC下,有什么好的指导资料吗?

我分数只有这些,哪位大侠帮个忙啊。
...全文
11630 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zybjtu 2014-03-26
  • 打赏
  • 举报
回复
stl alloc不是完全new和delete的。 是有内存池配置的,但是局限于小的数据量才会用到。
赵4老师 2014-03-26
  • 打赏
  • 举报
回复
在程序的主循环中杜绝动态分配才是杜绝内存碎片的解决之道。 参考内存池、连接池、对象池、××池、……
turing-complete 2014-03-25
  • 打赏
  • 举报
回复
试试 jemalloc 和 tcmalloc
menzi11 2014-03-25
  • 打赏
  • 举报
回复
tcmalloc挺好,这个也不错,直接带STL风格的分配器: http://www.nedprod.com/programs/portable/nedmalloc/
苍蝇①号 2014-03-25
  • 打赏
  • 举报
回复
可以试试tcmalloc感觉还不错
bobo_包子 2014-03-25
  • 打赏
  • 举报
回复
引用 2 楼 truexf 的回复:
stl的内存碎片式老调重弹很多次了。加条内存的事。我不认为自己写的内存分配器和超越运行库和stl
有这么极端吗? STL自带的内存分配算法是为所有人准备的,当我们有特殊需要的时候就是要自己写,不然STL还带接口给我们干什么!!! 比如当我们程序需大量分配和释放几种类型的时候,完全可以为每种类型申请个堆,然后在固定堆里申请某个类型,这样就不容易出现内存碎片。
CyberLogix 2014-03-25
  • 打赏
  • 举报
回复
dlmalloc
taodm 2014-03-25
  • 打赏
  • 举报
回复
简直是瞎胡闹般的想法。 直接上google的tcmalloc
derekrose 2014-03-25
  • 打赏
  • 举报
回复
gcc应该也会有差不多的碎片吧
「已注销」 2014-03-25
  • 打赏
  • 举报
回复
不如就别用stl了,用c开发
「已注销」 2014-03-25
  • 打赏
  • 举报
回复
stl的内存碎片式老调重弹很多次了。加条内存的事。我不认为自己写的内存分配器和超越运行库和stl
__cc__ 2014-03-25
  • 打赏
  • 举报
回复
引用 楼主 neo_liang 的回复:
我在VC上开发用了很多STL的东西,如string。后来发现程序内存碎片很严重,找了下原因,发现STL的空间配置器直接new和delete的。 我想问下,这个有什么好的解决方法吗?GCC的STL是怎么样的,会不会也出现这样的问题? 我想把stlport移植到VC和GCC下,有什么好的指导资料吗? 我分数只有这些,哪位大侠帮个忙啊。
实现STL的内存分配器allocator

64,654

社区成员

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

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