vector 的内存分配问题

vector 的内存分配问题

vector 有一个机制是这样的,如果新加入一个元素,如果size 大于了capacity,那么vector 就会重新找一块更大的地方再把数据放进去,下面进入调试:

在这里插入图片描述
这是原本vector首个元素的地址,这时size 和capacity 都是1,下面新增一个元素让size大于capacity

在这里插入图片描述
可以看到当size 大于capacity 之后内存确实进行重新分配,vector首元素的地址发生了改变,而且原来的值也乱了,为什么呢?下面给出解释:

重新分配的过程:
申请一块新的内存 >>> 拷贝数据 >>> 释放原内存

所以,使用vector容器的时候可以预先空间,把capacity定得够大,这样可以尽量避免重新分配vector 的内存,不增加程序的负担。
例:

int main()
{
    vector <int> A;
    A.reserve(10);
    return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值