//capacity:容器占用的内存(容器类型个数 capacity可以大于size)
#include "../common.h"
int main()
{
vector<int> v;
printf("没有元素 ****** size:%ld\n",v.capacity());
v.push_back(1);
printf("添加第1个元素(1) **** size:%ld\n",v.capacity());
v.push_back(2);
printf("添加第2个元素(2) **** size:%ld\n",v.capacity());
v.erase(v.begin());
printf("删除第1个元素(1) **** size:%ld (%d)\n",v.capacity(),v[0]);
v.erase(v.begin());
printf("删除第2个元素(2) **** size:%ld (%d)\n",v.capacity(),v[0]);//没有其他值覆盖,v[0]仍然为2
v.push_back(3);
printf("新增第1个新元素(3) **** size:%ld (%d)\n",v.capacity(),v[0]);
v.shrink_to_fit();
printf("退回多余的内存 **** size:%ld (%d)\n",v.capacity(),v[0]);
v.push_back(4);
printf("新增第2个新元素(4) **** size:%ld (%d)\n",v.capacity(),v[0]);
v.push_back(5);
printf("新增第3个新元素(5) **** size:%ld (%d)\n",v.capacity(),v[0]);
v.push_back(6);
printf("新增第4个新元素(6) **** size:%ld (%d)\n",v.capacity(),v[0]);
v.push_back(7);
printf("新增第5个新元素(7) **** size:%ld (%d)\n",v.capacity(),v[
vector 内存管理(释放多余的内存、空闲的内存)
最新推荐文章于 2025-03-12 15:23:44 发布
本文通过C++代码展示了`std::vector`在添加、删除元素及使用`shrink_to_fit()`函数时的内存管理行为。实验表明,`shrink_to_fit()`可以释放多余内存,但其效果依赖于编译器实现。清空和删除元素不会自动释放内存,而是在需要时重新分配。建议仅在必要时手动调用`shrink_to_fit()`以优化内存使用。

最低0.47元/天 解锁文章
2万+

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



