首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std :: vector.clear()是否在每个元素上删除(空闲内存)?

在C++中,std::vector.clear()函数用于清除向量中的所有元素。它并不会释放内存,而是将内存保留并设置为未分配状态。这意味着,如果您再次向该向量添加元素,它将重用之前分配的内存,而无需再次分配内存。

如果您希望释放内存,可以使用std::vector.shrink_to_fit()函数。这将请求向量释放不再需要的内存,并将未使用的内存返回给操作系统。但请注意,这不是强制性的,实际的内存释放取决于底层实现。

总之,std::vector.clear()并不会在每个元素上删除(空闲内存),但您可以使用std::vector.shrink_to_fit()来请求释放未使用的内存。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vector shrink 请求容器降低其容量和size匹配 shrink_to_fit();

resize(),设置大小(size); reserve(),设置容量(capacity); size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。 打个比方:买了一个新房子,新房子里可以放3张床reserve(3),这是说房子的容量是最多放3张床,但是屋里并不是有三张床,二resize(3),房里安装了3张床,此时房里的床可以使用了。 reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于等于函数的参数,影响capacity。但reserve的功能确实蹩脚,只能用reserve是的capacity变得比之前大。 resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。若尺寸变大,不够的数据用该函数第二个参数填充,影响size。 由于vector是顺序容器,在内存中分配了一块连续的存储空间。为了保证动态添加元素的高效率,因此必须预先为vector分配一段空间,这个空间就是capacity。 而容器中元素的个数就是size(),在容器中,capacity总是大于等于 size; 当vector数组插入数据量过大时,其capacity,会变得很大,且清空vector容器后,还会保留原分配的容量capacity。系统不会自动收回空间吗?真的不会!!!! 我们一点一点写程序把risize()跟reserve()弄那个明白。

02
领券