std::vector实现原理及特定场景下的改进

1)      说一下std::vector的实现原理,主要讲一下和内存管理相关的内容。

2)      常驻内存程序,一个std::vector的生命周期和程序生命周期相同,且会频繁的调用std::vector的push_back()和clear()方法,调用clear()方法时,vector.size()小于1万的概率为0.95,vector.size()可能出现的最大值为100万。如果程序中有多个这样的std::vector实例,程序长期运行后,会导致内存持续增长,一定时间后,可能将内存耗尽。请问,如何用较小的代价修改vector的设计,来避免内存持续增长问题。

答:

1)内存不够用时,双倍扩容。clear()时,不释放内存,以减少内存分配次数。

2)修改clear()方法,当vector.size()大于1万时,释放内存。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐