有没有人对stl的内存碎片问题有什么实践体会?

wangeen 2012-12-26 10:29:08
刚刚看到一篇文章,很好奇,很多人说stl有内存碎片问题,所以想了解一下是不是有人真的遇到过。
...全文
244 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackzhhuang 2012-12-26
  • 打赏
  • 举报
回复
我遇到过一次,当时用vector存数据,很好,测试没问题。上线崩溃了,立马查原因,最后定位是数据量过大,vector只增加内存不会减少内存,除非用swap。 不过,这些似乎和内存碎片没什么关系,因为vector是连续的……
zilaishuichina 2012-12-26
  • 打赏
  • 举报
回复
http://blog.163.com/dengminwen@126/blog/static/870226720097189486788/
stereoMatching 2012-12-26
  • 打赏
  • 举报
回复
>clear也没用。clear只是清空vector的数据,空间并没有被释放。要想释放空间我只知道swap。 c++11新加了一个函数,shrink_to_fit 古典做法 std::vector<T>(v).swap(v); //copy std::vector<T>().swap(v); //clean
prajna 2012-12-26
  • 打赏
  • 举报
回复
..。
zhangtonghui816 2012-12-26
  • 打赏
  • 举报
回复
我估计说的内存碎片指的是内部碎片,这是由于它内部的算法造成的
zhangtonghui816 2012-12-26
  • 打赏
  • 举报
回复
最近自己设计了个vector 你说内存碎片,个人理解可以分为内部碎片和外部碎片两部分 stl中的vector最为常用,它分配内存是连续的 有一种内存分配方式是1,2,3,6,9还有一种分配方式是1,2,4,8,16一次类推 你分配的内存可能用不完,所以内部碎片就产生了就是capicity-size的部分 外部碎片更好理解就是你分配大片区域太多了,块与块之间出现碎片了。
ArthurJia 2012-12-26
  • 打赏
  • 举报
回复
引用 4 楼 pengyw 的回复:
引用 2 楼 jackzhhuang 的回复:我遇到过一次,当时用vector存数据,很好,测试没问题。上线崩溃了,立马查原因,最后定位是数据量过大,vector只增加内存不会减少内存,除非用swap。 不过,这些似乎和内存碎片没什么关系,因为vector是连续的…… 貌似你没有clear vector吧
clear也没用。clear只是清空vector的数据,空间并没有被释放。要想释放空间我只知道swap。
proorck6 2012-12-26
  • 打赏
  • 举报
回复
我对内存泄露有体会,内存碎片到是没有。
pengyw 2012-12-26
  • 打赏
  • 举报
回复
引用 2 楼 jackzhhuang 的回复:
我遇到过一次,当时用vector存数据,很好,测试没问题。上线崩溃了,立马查原因,最后定位是数据量过大,vector只增加内存不会减少内存,除非用swap。 不过,这些似乎和内存碎片没什么关系,因为vector是连续的……
貌似你没有clear vector吧
赵4老师 2012-12-26
  • 打赏
  • 举报
回复
楼主可以下载使用内存碎片整理软件试试。

64,684

社区成员

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

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