问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VC vector clear() 的问题

发布网友 发布时间:2022-04-26 15:00

我来回答

2个回答

热心网友 时间:2022-05-07 23:06

因为对于vector,clear并不真正释放内存(这是为优化效率所做的事),clear实际所做的是为vector中所保存的所有对象调用析构函数(如果有的话),然后初始化size这些东西,让你觉得把所有的对象清除了。。。

真正释放内存是在vector的析构函数里进行的,所以一旦超出vector的作用域(如函数返回),首先它所保存的所有对象会被析构,然后会调用allocator中的deallocate函数回收对象本身的内存。。。

所以你clear后还能访问到对象数据(因为它根本没清除),至于上面这位仁兄所指出的也有道理,在一些比较新的C++编译器上(例如VS2008),当进行数组引用时(例如a[2]这种用法),STL库中会有一些check函数根据当前容器的size值来判断下标引用是否超出范围,如果超出,则会执行这样一句:
_THROW(out_of_range, "invalid vector<T> subscript");
即抛出一个越界异常,你clear后没有捕获异常,程序在新编译器编译后就会崩溃掉。。。。

热心网友 时间:2022-05-08 00:24

我使用的你代码一运行就崩溃了,明显vector中的值正常的被清除了,没有出现你说的情况。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 java vector中clear()与removeAllElements(),arraylist的clear()与new arraylist()有何区别? vector的clear会释放动态内存吗 C++中vector&lt;int&gt;a,b(n,0)什么意思 c++ vector clear() 方法的问题 VC/MFC vector 如何释放vector中的多余的内存 c++ 如何删除 vector中的第一个元素 用memset可以清空vector吗? vector怎么清理内存 怎样在c++ 中删除vector最后一个元素 如何正确释放Vector的内存 vector 清除问题 侯耀文的遗产为什么那么难分,都给儿女不就完了 如何删除容器vector里面的所有元素 侯瓒做什么工作的 使用STL vector的几种清空容器(删除)办法 五万的恩情两千万还!师傅去世了,郭德纲却依旧照顾她的家人,你怎么看? vector怎样清空 在侯耀文遗产案中,最大的受益者是谁? 侯瓒的介绍 如何清空vector数组 除了放料猛煮,卤猪肝还有其它的完美做法吗? 猪肝能不能卤着吃 猪肝是贫血人的福音,一定要正确认识猪肝,如何做猪肝? 猪肝是炒着吃好还是做卤猪肝好? 微信被封号了,聊天记录还有吗? 学校德育部门生本教育 中学生自查自纠个人总结 求:写一份给学校里的网络部门要求写一份对部门的建议书应该怎么写 急需!!!谁那有通信行业的行风建设工作计划和工作总结? 水钰莱这三个字写什么字体好看? 有什么字体类似于咸莱字体,不带那种花花的特效的 上面字体黑边是怎么弄出莱的呀? 求大神指点 莱字还有第二个读音吗 在校服上画什么会比较好看 谁知道图片最后的字体是什么字体?在线等,先谢了~ 基奥斯蒂·瓦利斯的生平 除了火星文和繁体还有什么字体好看吗? 魅族mx怎么移动桌面软件的位置 魅族mx图标图标怎么移动不了啊 谁有好看的字体?有的速度戳进来哇。别给我网站,网站字体太多看不过莱。