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