当然,我这里只是针对我这一会儿的情况。最近跑的一个C++程序,迭代时间长,而且一共有800个迭代,等了一天,跑到第284个迭代就挂了,重新跑一次,同样的地方又挂了。各种检查是不是有申请了内存没释放(delete[])没释放的。最后,千辛万苦,终于发现,是vector这个小家伙捣的鬼。

在http://www.educity.cn/wenda/257316.html中说: 
”事实超乎你的想象,我一个朋友用vector直接把内存吃光了,你好好检查下 
如果有很多个的话,不妨手动清空掉,或者你不用vector试试,估计就不会出问题了 
主要你知道吗,vector不止是出现内部内存碎片,它还导致外部内存碎片

vector开辟的是一个连续的空间,比方你这个空间是100M,分配不出来这么大的连续空间就报错了。 
即使内存里还有1G但是没有连续100M的空间也会bad_alloc的“

下面摘自http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/08/2627666.html,很好的一个vector总结 
说v.~ vector () ,销毁所有数据,释放内存。 
而后又看到另一个帖子: 
http://www.cnblogs.com/lxshanye/archive/2013/05/20/3088558.html 
说C++中的vector不能像C#一样有托管的垃圾回收机制回收被占用的内存空间,但是你可以在使用完vector后调用~vector()析构函数释放内存。

赶紧试一下这种方法,果然一举成功! 
再次感谢网上的大神们!

后来又不行了,跑到第1200多个迭代的时候,又崩了。这回请教了下坐在我身后的阿龙大神,他说,我一次读入vector的数据只有20万行的话,其实只有一两兆,很小。建议我自己先开个数组,然后不要clear,下一回就直接覆盖上去就好了。我谢过后,正准备改,阿龙一个激灵,站起身来跟我说,其实也不用自己开,只要将”new vector“那句放出去就好了,意思是因为我是在函数内new vector,这就只能在stack中开空间,stack只有一两兆。应该放到函数外,即file scope上,这样就是在heap里开空间,这很大,不用担心。

身边有大神的感觉就像现在窗外的天,让人心情明媚极了!
--------------------- 
作者:tvxq_xy 
来源:CSDN 
原文:https://blog.csdn.net/TVXQ_xy/article/details/50392384 
版权声明:本文为博主原创文章,转载请附上博文链接!

bad_alloc处理相关推荐

  1. GDCM:gdcm代码中引发bad_alloc异常测试程序

    GDCM:gdcm代码中引发bad_alloc异常测试程序 GDCM:gdcm代码中引发bad_alloc异常测试程序 GDCM:gdcm代码中引发bad_alloc异常测试程序 #include & ...

  2. XGB模型训练报错 terminate called after throwing an instance of ‘std::bad_alloc‘ what()

    背景:需要做XGB模型增量训练,但是因为一些原因没有得到原来的XGB模型,只有dump文件. XGB模型的dump文件是它的树结构存储为一个相对人类好理解的模型文件,但并不能被重新加载进XGB进行增量 ...

  3. GCC 9.4 编译error: catching polymorphic type ‘class std::bad_alloc’ by value [-Werror=catch-value=]

    环境 lm@lm:~$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.4 LTS (Focal Fossa)" ...

  4. 久别重逢的 std::bad_alloc

    久别重逢是说,自从在教科书上见过它一面之后,这才是第二次碰面.也就是说,在这些年的编程经历中,从来没有遇到过吧--至少在我印象中是这样的.以至于我都开始怀疑在"平常的"程序中,它是 ...

  5. terminate called after throwing an instance of 'std::cad_alloc' what():std::bad_alloc

    内存不够: 1,确认系统已占用内存是否正常,排除数据量过大导致的问题,此时系统内存不足导致 std::bad_alloc 内存剩余: 1,确认接口调用时,调用和背调接口的的参数是否一致,动态库库调用中 ...

  6. 报错信息 terminate called after throwing an instance of ‘std::cad_alloc‘ what():std::bad_alloc

    最近做了一道bfs算法的程序题 输入测试数据后卡在运行框中 然后会产生一个错误信息 第一次见到这样的报错于是记录一下解决过程 terminate called after throwing an in ...

  7. c++运行时报错terminate called after throwing an instance of ‘std::bad_alloc‘

    程序运行时发生错误 terminate called after throwing an instance of 'std::bad_alloc'what(): std::bad_alloc 代码类似 ...

  8. Microsoft C++ 异常: 内存位置处的 std::bad_alloc问题解决办法

    在vs2017写c++的时候遇到了这种问题,异常出现在vector申请了过多的内存,大概是2g多的时候就出现了异常,后来发现是因为处于x86模式运行,改为x64模式运行就可以解决问题.

  9. android源代码 abi,Android内核源码Abi目录学习笔记

    好记性不如烂笔头,今天要学习的是Android中Abi目录下的代码.下面是基本的学习的笔记的汇总. 首先是include中的头文件的说明. 在cxxabi的头文件中主要需要掌握下面的几个点: 1.这个 ...

最新文章

  1. 初识vue+elementUi
  2. python面试题及答案bt_公布上期Python笔试题答案,附带源码与运行结果
  3. 计算php代码执行时间长短的类
  4. ux的重要性_UX中清晰的重要性
  5. C++:求第k小的数
  6. PHP生成器--动态生成内容的数组
  7. Java中的资源文件加载方式
  8. 为什么 Kafka 这么快?
  9. 换了路由器电脑都连不上网了_高校连上网自由都实现不了?三大运营商:这锅我不背...
  10. ue4文档接口类学习
  11. matlab中邮递员问题实例,中国邮递员问题的求解实例.doc
  12. 贪心科技分布式高性能深度实战学习笔记
  13. 读取csv(excel类相关文件)常见bug,及解决办法统计
  14. dest是什么意思(dest是什么意思车上的)
  15. DUTOJ1205(大数)
  16. 苹果homekit,homeassistant,谷歌等智能生态系统,哪一款更加适合你?
  17. android插件实现打印机,Android USB调用打印机(针式打印机)
  18. 服务器虚拟机限速,Wiwiz虚拟机实现连接限速的方法
  19. 单调队列水题 刷广告
  20. 引用SMTH的一个“坑”!

热门文章

  1. 人物建模之影视建模与游戏建模的差异,你都知道吗?
  2. 《瞬间之美》:做细节的魔鬼
  3. 滤波融合(一)基于C++完成一个简单的 卡尔曼滤波器 线性的系统和测量模型
  4. Hadamard正交编码+BPSK误码性能分析
  5. Latin方及Hadamard矩阵
  6. iOS-方形图片设置成圆形图片
  7. java生成表_java生成表格图表
  8. nodejs操作mongodb数据库
  9. Android四大组件及变异测试
  10. CSerialPort串口类的修正版2014-01-10