首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-07 
有没有人对stl的内存碎片问题有什么实践体会?刚刚看到一篇文章,很好奇,很多人说stl有内存碎片问题,所以想

有没有人对stl的内存碎片问题有什么实践体会?
刚刚看到一篇文章,很好奇,很多人说stl有内存碎片问题,所以想了解一下是不是有人真的遇到过。
[解决办法]

引用:
我遇到过一次,当时用vector存数据,很好,测试没问题。上线崩溃了,立马查原因,最后定位是数据量过大,vector只增加内存不会减少内存,除非用swap。

不过,这些似乎和内存碎片没什么关系,因为vector是连续的……

貌似你没有clear vector吧
[解决办法]
最近自己设计了个vector
你说内存碎片,个人理解可以分为内部碎片和外部碎片两部分
stl中的vector最为常用,它分配内存是连续的

有一种内存分配方式是1,2,3,6,9还有一种分配方式是1,2,4,8,16一次类推
你分配的内存可能用不完,所以内部碎片就产生了就是capicity-size的部分

外部碎片更好理解就是你分配大片区域太多了,块与块之间出现碎片了。


[解决办法]
>clear也没用。clear只是清空vector的数据,空间并没有被释放。要想释放空间我只知道swap。
c++11新加了一个函数,shrink_to_fit

古典做法
std::vector<T>(v).swap(v); //copy
std::vector<T>().swap(v); //clean

热点排行