vector 的resize 与reserve的区别

       今天写了一段代码,需要传递一段缓冲数组给类似于这样一个函数fun(char *buf,int size),我定义了一个vector<char>buffer,然后buffer.reserve(1024),主要是为了与分配内存,避免后面发生内存重新分配。然后我这样调用,fun(&buffer[0],buffer.capacity()),程序运行到这里的时候,弹出了个assert框,大概意思是说我的vector发生了越界访问,百思不得其解。后来我突然想起,reserver只是预分配了一段内存,一段没有初始化的内存,换言之,程序这时候不知道要以什么方式去读取这段内存的,而resize,则不仅仅把内存置为指定大小,还会在补足的内存上构造对象。不过,这也仅仅是Debug的时候会发生assert而已,估计release是不会有问题的,明天试试看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值