c++ vector内存分配

本文详细解析了vector容器如何通过start、finish、end_of_storage三个指针管理内存,阐述了vector在内存不足时的自动增长策略,即容量变为1.5倍或2倍的过程。介绍了与vector内存管理相关的四个关键函数:size()、capacity()、reserve(n)和resize(),并解释了vector在未预先分配内存时,如何自动增长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • vector内存增长

1、vector使用3个指针(start, finish, end_of_storage)分别存放向量的起始字节位置、当前最后一个向量元素的末尾字节和整个容器所占用空间的末尾字节;

2、每当内存不足时,capacity()大小变为原来的1.5倍或2倍;

3、4个与vector内存分配相关的函数:
size()返回已用空间的大小;
capacity()返回总空间大小;
reserve(n)表示指预先分配一块大小为n的内存空间;
resize()只改变元素个数,不改变总容量大小;

4、若未调用reserve(n)分配内存,那么vector的自动增长由编译器完成。自动增长过程包括重新分配内存空间、原空间内容拷贝、释放原内存空间三个部分。vector的空间动态增加大小,并不是在原空间之后的相邻地址增加新空间,因为vector的空间是线性连续分配的,不能保证原空间之后有可供配置的空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值