vector 能用realloc申请空间吗?

想一想这样实现可以吗 ?
我们都知道 vector是个动态连续序列式容器
,他在申请空间时,如果发生扩容将会将内部元素整体移动到新申请出来的空间上。
我们 来看看realloc 函数
void realloc(void src,sizeof(Type)* num)**

想一想可以实现吗 ?

我们都知道,当relloc的源指针是NULL 的时候,他跟malloc的功能完全相同。
relloc 申请成功(我们)将会(强转)返回新的指针;
但是 !!! 别忘了 ,relloc 它可能回原地扩容原地空间够申请的话 ,relloc的首地址是不会变的。 这个时候你想想,如果我们通过构造新建 了 一个空的容器,现在我们要进行预申请空间 这时如果使用了relloc它可以申请空间成功,可你别忘了,默认构造出来的对象的首地址时 nullptr ;这将导致无法访问,更无法写入!! 我们的迭代器在这里根本不能够解引用的!就算从尾部开始定义迭代器,它也将无法避免0号下标无法赋值,

所以 relloc是不能用在这种场合下扩容的!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值