1. 当vector的内存用完了,它是如何动态扩展内存的?它是怎么释放内存的?用clear可以释放掉内存吗?是不是线程安全的?
(1). vector内存用完了,会以当前size大小重新申请2*size的内存,然后把原来的元素复制过去,把新元素插上,然后释放原来的内存。
(2). 一般我们释放vector里的元素使用clear,其实它不能释放内存,要想释放内存要使用swap,这样:
|
1 2 3 4 5 6 |
|
(3). 引用《effective stl》的第十二条:当涉及 STL容器和线程安全性时,你可以指望一个 STL库允许多个线程同时读一个容器,以及多个线程对不同的容器做写入操作。你不能指望 STL库会把你从手工同步控制中解脱出来,而且你不能依赖于任何线程支持。必须自己去写多线程安全措施。
本文详细介绍了C++ STL容器vector如何管理内存,包括内存动态扩展与释放的方法,并提供了有效的内存释放技巧。此外,还探讨了vector在多线程环境下的线程安全性问题。
1925

被折叠的 条评论
为什么被折叠?



