关于c++中的std::bad_alloc的

steven30832 2012-12-29 05:24:13
在new的时候出现了bad_alloc,
感觉是内存泄露,但是仔细检查了一下自己的代码,该delete的局部空间都delete了。。。
而且本身分配的空间也不是特别大,不知道为什么会这样。

后来想到会不会是new和delete的操作过于频繁导致的类似问题?
有没有高手能解答一些,new和delete次数太多,就算即时释放分配的空间,也会造成内存占用过大么?
...全文
619 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JXW735 2013-01-22
  • 打赏
  • 举报
回复
没有用vector之类的,也出现这种情况,是啥原因呢? 反复用了new/delete
steven30832 2012-12-29
  • 打赏
  • 举报
回复
引用 4 楼 zhangtonghui816 的回复:
事实超乎你的想象,我一个朋友用vector直接把内存吃光了,你好好检查下 如果有很多个的话,不妨手动清空掉,或者你不用vector试试,估计就不会出问题了 主要你知道吗,vector不止是出现内部内存碎片,它还导致外部内存碎片 vector开辟的是一个连续的空间,比方你这个空间是100M,分配不出来这么大的连续空间就报错了。 即使内存里还有1G但是没有连续10……
受教了,我试试看...
wangeen 2012-12-29
  • 打赏
  • 举报
回复
用valgrind清理一下内存错误提示
zhangtonghui816 2012-12-29
  • 打赏
  • 举报
回复
事实超乎你的想象,我一个朋友用vector直接把内存吃光了,你好好检查下 如果有很多个的话,不妨手动清空掉,或者你不用vector试试,估计就不会出问题了 主要你知道吗,vector不止是出现内部内存碎片,它还导致外部内存碎片 vector开辟的是一个连续的空间,比方你这个空间是100M,分配不出来这么大的连续空间就报错了。 即使内存里还有1G但是没有连续100M的空间也会bad_alloc的
steven30832 2012-12-29
  • 打赏
  • 举报
回复
引用 2 楼 zhangtonghui816 的回复:
虽然内存像白菜,但总有用完的时候。 bad_alloc内存分配失败,那么检查下是否用了stl之类的吃内存的东东 比方说vector,内存分配到后来是翻倍的。
确实用了vector...但是我简单算了算想翻倍也不应该这么大内存呀...
zhangtonghui816 2012-12-29
  • 打赏
  • 举报
回复
虽然内存像白菜,但总有用完的时候。 bad_alloc内存分配失败,那么检查下是否用了stl之类的吃内存的东东 比方说vector,内存分配到后来是翻倍的。
taodm 2012-12-29
  • 打赏
  • 举报
回复
重点查内存越界

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧