vector 的resize 与reserve的区别
来源:互联网 发布:编程命名法 编辑:程序博客网 时间:2024/04/23 22:56
今天写了一段代码,需要传递一段缓冲数组给类似于这样一个函数fun(char *buf,int size),我定义了一个vector<char>buffer,然后buffer.reserve(1024),主要是为了与分配内存,避免后面发生内存重新分配。然后我这样调用,fun(&buffer[0],buffer.capacity()),程序运行到这里的时候,弹出了个assert框,大概意思是说我的vector发生了越界访问,百思不得其解。后来我突然想起,reserver只是预分配了一段内存,一段没有初始化的内存,换言之,程序这时候不知道要以什么方式去读取这段内存的,而resize,则不仅仅把内存置为指定大小,还会在补足的内存上构造对象。不过,这也仅仅是Debug的时候会发生assert而已,估计release是不会有问题的,明天试试看。
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector.resize 与 vector.reserve的区别
- vector 的resize 与reserve的区别
- vector中resize与reserve的区别
- 12周代码
- Struts2详细工作流程
- 如何使用gcc编译器
- Linux日志
- 变量值互换
- vector 的resize 与reserve的区别
- 今天开博客了
- C#中调用exe程序
- 形态学重建
- iOS 证书、密钥及信任服务
- C# 调用迅雷下载引擎模块
- 数据处理
- u-boot的Makefile分析
- Linux桌面使用之道